如何在 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 Ubuntu 上找到 MySql 的 .Net Framework 数据提供程序的存在?