c# – 让Linq与Mysql和Mono玩得很好,有可能吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 让Linq与Mysql和Mono玩得很好,有可能吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2567字,纯文字阅读大概需要4分钟。
内容图文
![c# – 让Linq与Mysql和Mono玩得很好,有可能吗?](/upload/InfoBanner/zyjiaocheng/911/d8e563a3b4874cd6b2fbbe6170764cb0.jpg)
我一直试图让Linq在Ubuntu上使用Mysql,在存储库(2.10.5)中使用Mono版本,我只会头疼.
首先,我不得不修改MySQL提供程序sqlmetal.exe.config,因为它默认设置为旧的和不推荐使用的版本,我设法让它工作设置我在这台机器上安装的MySQL连接器(来自存储库) )作为sqlmetal的提供者.我为我的目标数据库生成了带有sqlmetal的DataContext,这似乎有效,但我不完全确定.
在生成DataContext之后,我在monodevelop上创建了一个新项目来测试它,起初我尝试使用一个简单的MysqlConenction并检查连接器是否正常工作,我不得不将连接器组件添加到项目中,但这没关系,它工作正常.
然后我尝试使用此代码使用DataContext进行连接:
using System;
using System.Linq;
using System.Data.Linq;
using MySql.Data.MySqlClient;
namespace test
{
public class test
{
public static void Main (String[] args)
{
Test db = new Test (new MySqlConnection("Userid=root;database=test;server=localhost;password=password"));
foreach(var tr in db.Users)
{
Console.Write(tr.Username);
}
}
}
}
此代码失败.似乎Linq正在为MySQL生成错误的SQL代码,至少它抛出的异常似乎是这样说的:
Unhandled Exception: MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Id], [Password], [Username]
FROM [test].[Users]' at line 1
at MySql.Data.MySqlClient.MySqlStream.ReadPacket () [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.NativeDriver.GetResult (System.Int32& affectedRow, System.Int32& insertedId) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Id], [Password], [Username]
FROM [test].[Users]' at line 1
at MySql.Data.MySqlClient.MySqlStream.ReadPacket () [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.NativeDriver.GetResult (System.Int32& affectedRow, System.Int32& insertedId) [0x00000] in <filename unknown>:0
有谁知道是否可以使用Linq和Mono连接到MySQL?有什么我想念的吗?
谢谢!
解决方法:
我不知道为什么每个人似乎都认为LINQ to SQL不适用于Mono.
Mono经常发展:截至今天,LINQ to SQL在Mono和MySQL上运行良好(我在PostgreSQL中成功使用它).
代码中有一点错误:您没有在连接字符串中指定DbLinqProvider.这是生成针对MySQL的SQL代码所必需的.
在这种情况下,生成的SQL代码特定于SQL Server:
"FROM [test].[Users]"
本来应该
"FROM `test`.`Users`"
尝试在连接字符串中添加“DbLinqProvider = MySql”.这应该可以解决您的问题.
见:http://www.mono-project.com/Release_Notes_Mono_2.6#LINQ_to_SQL
您应该知道Mono / DbLinq实现仍然不完整(例如,不支持编译的查询),但足以开发完整的应用程序.
内容总结
以上是互联网集市为您收集整理的c# – 让Linq与Mysql和Mono玩得很好,有可能吗?全部内容,希望文章能够帮你解决c# – 让Linq与Mysql和Mono玩得很好,有可能吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。