如何在Mono上的MySql数据库中使用Linq?

时间:2020-03-05 18:47:10  来源:igfitidea点击:

有许多库提供Linq功能,以使Ccode与MySql数据库进行交互。其中哪一个是Mono上最稳定和可用的?

背景(通常无关紧要):我有一个简单的C(.Net 2.0)程序,用于更新MySql数据库中的值。它通过cron作业每晚执行一次,并在奔腾3 450Mhz,Linux + Mono上运行。我想使用Linq(.Net 3.5)重写它主要是作为练习(我还没有使用过Linq)。

解决方案

回答

这时我们不能使用linq到sql,我们可能会研究第三方linq mysql提供程序或者linq到实体。 linq to sql仅适用于sql服务器数据库。

回答

MySql唯一(免费)的linq提供程序是DbLinq,我认为距生产就绪还有很长的路要走。

也有商业上的MyDirect.Net,但我听过对其功能的评价不一。

我已经读到MySql将为5.3版本的.net连接器实现Linq to Entities API,但是我不知道是否还有时间表。实际上,MySql几个月来一直完全不支持实体框架。

附录:根据发行说明,最新版本的MySql Connector / Net 6.0具有对EF的支持。我不知道这有多稳定/有用,所以我很乐意听到任何尝试过它的人的来信。

回答

LINQ to SQL只是ORM层,它利用表达式的功能使在代码中构造查询变得容易。

如果我们只是为工具调用即席查询,则几乎不需要使用LINQ,它只是在代码中添加了额外的抽象层。

回答

根据Mono路线图,我不确定Linq是否可用于Mono?

在最新版本中可能至少有一些Linq,但是在Mono 2.4中列出了Linq to DB(2009年2月)。

回答

不确定Mono,但是我刚开始使用LightSpeed,它支持LINQ-to-MySQL。

回答

我已经在http://www.primaryobjects.com/CMS/Article100.aspx上尝试了该教程。这使用dblinq / dbmetal来为每个表生成一个或者多个数据上下文类。

该代码在第一次尝试时失败,并带有未处理的异常(MySql.Data.Types.MySqlConversionException:无法将MySQL日期/时间值转换为System.DateTime")。 ;"到连接字符串。
不幸的是,事实证明这并不能解决我的问题。以为MySQL .Net连接器是我的责任,我使用MySQL连接器执行了dblinq生成的SQL,而没有linq2sql中间层。这次没有异常发生。
没有日期列的表可用于DbLinq。
因此,根据我的实验,我同意亚当的观点,DbLinq离生产准备还有很长的路要走。