我们正试图决定是否值得在项目中使用实体框架4。为此,我认为一个好的起点是将它与nhibernate进行比较,nhibernate已经成熟并经过多年的使用证明具有人们对企业应用程序所需的所有功能,并且找出了nHibernate缺少EF4的功能出去。
首先,我的知识有限:
找到一些文章:
http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx
答案 0 :(得分:5)
我第一次出现时尝试了实体框架,当我做任何非标准的事情时(我发现任何现实生活中的应用程序,事情并不像示例那样完美),我发现配置过于复杂。使用nhibernate,在非常易读的映射文件中很容易解决复杂问题。实体框架映射文件几乎不可读。
答案 1 :(得分:3)
NHibernate支持除SQL Server之外的其他数据库,例如如果您使用的是Oracle。实体框架本身旨在支持多个提供者,但您获得的唯一内置提供者是SQL Server。 Oracle尚未发布任何提供商,并且有其他数据库的商业或零散免费提供商。因此,如果支持多个DB在范围内,那么此时NHibernate领先于EF 4。
答案 2 :(得分:2)
虽然我对EF没有多少经验,但NHibernate最大的卖点之一就是它的可扩展性。 User Types和Event Listeners是NHibernate体验各方面可定制化的绝佳范例。
答案 3 :(得分:1)
我在桌面应用程序中使用Entity框架,虽然我对它很满意,但使用DateTime
对象有一个缺点 - 你无法访问属性,最重要的是,{ {1}}属性。
此外,您不能在LINQ查询中使用Entity Framework外部对象(即:不在Entity Framework上下文中的对象,如maping DateTime.Date
到Journal
),即。在映射时 - 您必须首先使用JournalDto
执行查询,然后执行映射。
关于EF工具有问题 - 我没有注意到任何相关内容,但我可能只是触及了框架的表面。