我正在寻找能够提供完整或接近完整的LINQ支持的ORM。
LINQ to SQL
- 支持LINQ内部的所有内容(.Contains,Math.Log等)
- 如果不创建新的datacontext,则无法预先加载关系属性
ADO.NET实体框架
- 可怕的LINQ支持(许多缺少的功能)
- 出色的地图功能
- 可以在ObjectQuery<>
光速
- 很棒的LINQ支持缺少一些功能(.Contains在where中)
- 生成的一些SQL非常低效。
这些似乎都不完美,我真的希望我可以从每个中获取点点滴滴。我个人非常喜欢ADO.NET EF,除了它缺少的功能使它使用起来很令人沮丧。
我知道有些人会赞美NHibernate而且我不会敲它但是我今天花了很多时间尝试它并且没关系但它的LINQ支持并不是那么好。
答案 0 :(得分:5)
尝试使用DataObjects.NET。 我是DO开发人员之一。我在该项目中的最新活动是实现LINQ for DataObjects。所以我可以简单地描述一下:
我们有大约1000次LINQ实施测试,其中99%都通过了。所以我可以说当前的实现接近于EF。有些方法不适用于EF,有些方法适用于我们的框架。 查看此简要说明http://www.x-tensive.com/Products/DO/。
答案 1 :(得分:4)
Llblgen似乎有很好的linq支持。弗兰斯有一系列关于他的发展的博客帖子http://weblogs.asp.net/fbouma/archive/2007/09/11/developing-linq-to-llblgen-pro-day-0.aspx
答案 2 :(得分:3)
的OpenAccess http://www.telerik.com/products/orm.aspx
答案 3 :(得分:2)
DataObjects.Net几乎完全支持LINQ。
答案 4 :(得分:2)
最新版本的SubSonic已经被Linq的使用重新改写 - http://subsonicproject.com/docs/3.0_Summary
答案 5 :(得分:0)
我和EF有同样的问题。我想将它用于映射,但由于缺乏良好的linq支持而退出它。
我不确定你的意思是热切的负载关系属性,但是你可以用普通的linq-2-sql来加载。
您使用LoadOptions.LoadWith<T>(expression).
答案 6 :(得分:0)
Signum Framework有一个linq提供程序http://www.signumframework.com/DatabaseQuery.ashx,并且具有完全不同的加载权限的方式。没有datacontext。
它只适用于新应用程序。
答案 7 :(得分:0)
NHibernate与Linq到NHibernate
答案 8 :(得分:0)
Genome O / RM使用LINQ生成数据访问层,将关联数据库系统(如Microsoft SQL Server,Oracle和IBM DB2)连接到.NET企业应用程序。
答案 9 :(得分:0)
EntityFramework 5.0虽然缺乏copiprison和nhibernate的一些功能,但它们缺乏一些功能,但是对于LINQ的支持,它比nhibernate要好得多。 Nhibernate具有SessionFactory和Session的概念,而entityframework具有DbContext的概念,类似于nhibernate的会话,但更容易设置和管理,您可以连接到许多数据库,您只需要为每个数据库定义DbContext和实例化SpecificDbContext,以便针对特定数据库开始和编写LINQ查询。