有许多库为与 MySql 数据库交互的 C# 代码提供 Linq 功能。其中哪一个在 Mono 上最稳定、最可用?

背景(大部分不相关):我有一个简单的 C# (.Net 2.0) 程序来更新 MySql 数据库中的值。它每晚通过 cron 作业执行,并在 Pentium 3 450Mhz、Linux + Mono 上运行。我想使用 Linq (.Net 3.5) 重写它,主要作为练习(我还没有使用过 Linq)。

有帮助吗?

解决方案

MySql 的唯一(免费)linq 提供程序是 数据库连接器, ,而且我相信距离生产就绪还有很长的路要走。

还有 MyDirect.Net 这是商业性的,但我听到对其功能的评价褒贬不一。

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


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

其他提示

根据 单声道路线图 我不确定 Linq 是否可用于单声道?

至少部分 Linq 可能在最新版本中可用,但 Linq to DB 已在 Mono 2.4 中列出(2009 年 2 月)

不确定 Mono,但我刚刚开始使用 光速 并且支持 LINQ-to-MySQL。

此时您无法使用 linq to sql,您可以查看第三方 linq mysql 提供程序或 linq toEntity。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”)。上网搜索后发现,只要在连接字符串中添加 "Allow Zero Datetime=True;",就能轻松解决这个问题。不幸的是,这并没有解决我的问题。我认为应该归咎于 MySQL .Net Connector,因此我使用 MySQL Connector 在没有 linq2sql 中间层的情况下执行了 dblinq 生成的 SQL。这次没有出现异常。没有日期列的表可以使用 DbLinq。因此,从我的实验来看,我同意 Adam 的观点,DbLinq 距离生产就绪还有很长的路要走。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top