如何以便携方式与数据库通信?

时间:2009-10-11 21:07:08

标签: .net database linq-to-sql ado.net mono

我想启动一个大量使用数据库的应用程序,它应该在.NET下以及Mono下的Mac / Linux上运行。

做了一些研究之后,我意识到目前在Mono(herehere)中,LINQ-to-SQL和LINQ-to-Entities都没有生产就绪。根据前一个链接,LINQ-to-SQL至少可以在2009年11月的某个时间进入Mono 2.6。

Mono也实现了ADO.NET 2.0,据我所知,虽然test results看起来并不好(假设页面是最新的)。此外,与LINQ相比,使用原始ADO.NET会非常痛苦。

在这种情况下,您会推荐哪种数据库访问API?

5 个答案:

答案 0 :(得分:3)

如果你想要一个ORM,请使用NHibernate。如果您不需要ORM,请使用ADO.NET。

答案 1 :(得分:1)

我建议在这里按界面编码。 .NET的一大优点是它大量使用接口,因此您可以针对IDbConnection,IDbCommand等进行编码。这意味着您可以在ADO.NET中编写应用程序代码,使其与虚拟数据库/提供程序无关。

答案 2 :(得分:1)

以下是与Mono支持的ADO.Net数据提供商的链接:

http://www.mono-project.com/Database_Access

您没有说明在Mono上运行时将使用哪个数据库。只有MS SQL Server支持Linq to SQL。

正如其他人所说,看起来nHibernate就是这样。

答案 3 :(得分:1)

经过大量研究后,我发现了SubSonic,它看起来比nHibernate更接近LINQ-to-SQL模型。只是提到它,因为没有其他人。不确定这是否是最终选择。

答案 4 :(得分:0)

为了记录,我们选择了IQToolkit和一个自定义工具来从数据库生成类。结果比 ActiveRecord 式方法更低级;基本上只是在SQL之上添加强类型和LINQ支持。