我想启动一个大量使用数据库的应用程序,它应该在.NET下以及Mono下的Mac / Linux上运行。
做了一些研究之后,我意识到目前在Mono(here和here)中,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?
答案 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支持。