LINQ To SQL 能否用于其他数据库(MySQl、Oracle 等)

Posted

技术标签:

【中文标题】LINQ To SQL 能否用于其他数据库(MySQl、Oracle 等)【英文标题】:Can LINQ To SQL used for other database (MySQl, Oracle, etc) 【发布时间】:2010-08-27 07:27:23 【问题描述】:

我有使用 WPF 创建项目并使用 LINQ to SQL 为数据库 O/RM 创建项目,当我完成我的项目时,有些人想使用 mysql 作为数据库,所以我可以在不更改任何源代码的情况下将我的 Linq 更改为 MySQL(也许只是更改连接字符串)

问候

【问题讨论】:

别忘了标记你最喜欢的答案。 【参考方案1】:

不,你不能。作为 O/RM 工具的 LINQ to SQL 专为与 SQL Server 数据库一起使用而开发*,Microsoft 将来不会添加多数据库支持。当你想要这个并且需要血统 LINQ 支持时,最好使用 Microsoft Entity Framework。


**C# 团队确实将 LINQ to SQL 设计为多数据库。当您查看 Reflector 中的 System.Data.Linq 程序集时,您仍然可以看到这种设计。然而,出于“某些”原因(阅读:营销),Microsoft 决定不允许在 LINQ to SQL 上支持多数据库。 LINQ to SQL 使用的提供程序模型是内部化的。虽然理论上,当您的应用程序完全信任运行时,仍然可以为其他数据库创建替代提供程序;这样做非常困难和痛苦,我从未见过有人尝试过。就像我说的,当您的应用程序需要多供应商支持时,您应该使用专门为此设计的 O/RM 工具。*

【讨论】:

【参考方案2】:

你需要 3. 派对支持。 http://www.devart.com 销售各种数据库的 DB 驱动程序,包括实体和 LINQ to SQL 支持。还有http://code.google.com/p/dblinq2007/和http://www.alinq.org/

【讨论】:

以上是关于LINQ To SQL 能否用于其他数据库(MySQl、Oracle 等)的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL语句(13)之开放式并发控制和事务

LINQ to SQL / LINQ to Collections 性能

用于 XML 文件持久性的 LINQ to SQL 等效项

用于新项目的 Linq to SQL

EF Core Linq-to-Sql GroupBy SelectMany 不适用于 SQL Server

用于 getdate() 和 dateadd() 的 Linq to SQL