如何在 Mono 上将 Linq 与 MySql 数据库一起使用?

Posted

技术标签:

【中文标题】如何在 Mono 上将 Linq 与 MySql 数据库一起使用?【英文标题】:How can I use Linq with a MySql database on Mono? 【发布时间】:2010-09-07 17:14:49 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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


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

【讨论】:

在搜索 Mono DB 工具时,我偶然发现了这个答案:DbLinq 目前准备好生产了吗?有其他选择吗?【参考方案2】:

根据Mono roadmap,我不确定 Linq 是否可用于单声道?

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

【讨论】:

【参考方案3】:

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

【讨论】:

LightSpeed 现在支持 Mono (mindscape.co.nz/blog/index.php/2009/02/12/lightspeed-and-mono)。【参考方案4】:

此时您不能使用 linq to sql,您可以查看第三方 linq mysql 提供程序或 linq to 实体。 linq to sql 仅适用于 sql server 数据库。

【讨论】:

【参考方案5】:

LINQ to SQL 只是一个 ORM 层,它利用表达式的强大功能让您在代码中轻松构建查询。

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

【讨论】:

【参考方案6】:

我已经尝试过http://www.primaryobjects.com/CMS/Article100.aspx 上的教程。这使用 dblinq/dbmetal 为每个表生成数据上下文类和类。

代码在第一次尝试时失败,出现未处理的异常(MySql.Data.Types.MySqlConversionException:无法将 MySQL 日期/时间值转换为 System.DateTime”)。谷歌搜索显示这应该可以通过附加“允许零”轻松解决Datetime=True;" 到连接字符串。 不幸的是,这并没有解决我的问题。认为 MySQL .Net 连接器是罪魁祸首,我使用 MySQL 连接器执行了 dblinq 生成的 SQL,而没有 linq2sql 中间层。这一次没有出现异常。 没有日期列的表确实适用于 DbLinq。 所以,从我的实验来看,我同意 Adam 的观点,DbLinq 离生产就绪还有很长的路要走。

【讨论】:

以上是关于如何在 Mono 上将 Linq 与 MySql 数据库一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Visual Studio 2017构建Gtk#/ Mono应用程序

设置运行Mono的串口的权限

如何在 Mono Ubuntu 上找到 MySql 的 .Net Framework 数据提供程序的存在?

如何在 SQL Server 上将 LinkServer 添加到 MySQL

如何在链接服务器上将数据从 mssql 更新到 mysql

实体框架/LINQ/SQL 与实体框架/LINQ/MYSQL