有许多库为与 MySql 数据库交互的 C# 代码提供 Linq 功能。其中哪一个在 Mono 上最稳定和可用?
背景(大部分无关紧要):我有一个简单的 C# (.Net 2.0) 程序更新 MySql 数据库中的值。它每晚通过 cron 作业执行,并在 Pentium 3 450Mhz、Linux + Mono 上运行。我想使用 Linq(.Net 3.5)重写它,主要是作为练习(我还没有使用过 Linq)。
MySql 的唯一(免费)linq 提供程序是DbLinq,我相信它距离生产就绪还有很长的路要走。
还有商业化的MyDirect.Net,但我听到了对其能力的褒贬不一的评价。
我已经读到 MySql 将为 .net 连接器的 5.3 版本实现 Linq to Entities API,但我不知道是否有时间表。事实上,MySql 几个月来一直对实体框架的支持保持沉默。
附录:MySql Connector/Net 6.0 的最新版本根据发行说明支持 EF。我不知道这是多么稳定/有用,所以我很想听听任何尝试过它的人的意见。
根据Mono 路线图,我不确定 Linq 是否可用于单声道?
至少有一些 Linq 可能在最新版本中可用,但 Mono 2.4 列出了 Linq to DB(2009 年 2 月)
不确定 Mono,但我刚开始使用LightSpeed,它支持 LINQ-to-MySQL。
此时您不能使用 linq to sql,您可能会查看第三方 linq mysql 提供程序或 linq to 实体。linq to sql 仅适用于 sql server 数据库。
LINQ to SQL 只是一个 ORM 层,它利用表达式的强大功能使在代码中构造查询变得容易。
如果您只是为您的工具调用临时查询,则几乎不需要使用 LINQ,它只是为您的代码添加了一个额外的抽象层。
我已经尝试过http://www.primaryobjects.com/CMS/Article100.aspx上的教程。这使用 dblinq/dbmetal 为每个表生成数据上下文类和类。
代码在第一次尝试时失败,出现未处理的异常(MySql.Data.Types.MySqlConversionException:无法将 MySQL 日期/时间值转换为 System.DateTime”)。谷歌搜索显示这应该可以通过附加“允许零日期时间 =真”轻松解决;" 到连接字符串。不幸的是,这并没有解决我的问题。认为应该归咎于 MySQL .Net 连接器,我使用 MySQL 连接器在没有 linq2sql 中介层的情况下执行了 dblinq 生成的 SQL。这次没有发生异常。表没有日期列的 DbLinq 确实可以工作。所以,从我的实验来看,我同意 Adam 的观点,DbLinq 距离生产就绪还有很长的路要走。