nhibernate有什么,缺少实体框架4?

时间:2010-10-13 00:08:09

标签: c# linq nhibernate entity-framework

我们正试图决定是否值得在项目中使用实体框架4。为此,我认为一个好的起点是将它与nhibernate进行比较,nhibernate已经成熟并经过多年的使用证明具有人们对企业应用程序所需的所有功能,并且找出了nHibernate缺少EF4的功能出去。

首先,我的知识有限:

  • 缓存:nhib具有L2缓存,而EF4具有较差的缓存(?)
  • nHibernate为大多数数据库提供了提供程序,而EF需要非sql数据库的插件
  • nHib更快/更优化
  • nHib具有扩展点(例如自定义字段类型)
  • ......还有什么?

找到一些文章:

http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

http://dotnetslackers.com/articles/ado_net/A-Feature-driven-Comparison-of-Entity-Framework-and-NHibernate-Multiple-Databases.aspx

http://dotnetslackers.com/articles/ado_net/A-Feature-driven-Comparison-of-Entity-Framework-and-NHibernate-Multiple-Databases-Part2.aspx

4 个答案:

答案 0 :(得分:5)

我第一次出现时尝试了实体框架,当我做任何非标准的事情时(我发现任何现实生活中的应用程序,事情并不像示例那样完美),我发现配置过于复杂。使用nhibernate,在非常易读的映射文件中很容易解决复杂问题。实体框架映射文件几乎不可读。

答案 1 :(得分:3)

NHibernate支持除SQL Server之外的其他数据库,例如如果您使用的是Oracle。实体框架本身旨在支持多个提供者,但您获得的唯一内置提供者是SQL Server。 Oracle尚未发布任何提供商,并且有其他数据库的商业或零散免费提供商。因此,如果支持多个DB在范围内,那么此时NHibernate领先于EF 4。

答案 2 :(得分:2)

虽然我对EF没有多少经验,但NHibernate最大的卖点之一就是它的可扩展性。 User TypesEvent Listeners是NHibernate体验各方面可定制化的绝佳范例。

答案 3 :(得分:1)

我在桌面应用程序中使用Entity框架,虽然我对它很满意,但使用DateTime对象有一个缺点 - 你无法访问属性,最重要的是,{ {1}}属性。

此外,您不能在LINQ查询中使用Entity Framework外部对象(即:不在Entity Framework上下文中的对象,如maping DateTime.DateJournal),即。在映射时 - 您必须首先使用JournalDto执行查询,然后执行映射。

关于EF工具有问题 - 我没有注意到任何相关内容,但我可能只是触及了框架的表面。