ADO.NET实体框架与NHibernate

时间:2008-08-20 14:48:00

标签: nhibernate entity-framework orm ado.net

因此,ADO.NET实体框架受到了一些不好的压力(以博客条目和请愿的形式),但我不想急于做出判断。我的实验时间有限,但我想知道有没有人使用过更多的经验反馈?

最后,有关使用NHibernate的想法已经存在了很长时间,并且可能比ADO.NET实体框架更成熟。

7 个答案:

答案 0 :(得分:13)

NHibernate可能更成熟。这并不一定意味着它是一个“更好”的解决方案。在我的工作中使用它已经有一段时间了,我个人更喜欢使用几乎任何东西而不是NHibernate(即使是直接的SQL,如果迁移是远程可行的)。 NHibernate引发的错误消息的数量并不意味着任何东西(或者意味着什么,但绝不应该发生)是绝对错误的,因为它的一些默认行为(例如为Find中返回的每个对象刷新一次会话) )。

就个人而言,当我有选择时,我会使用LINQ to SQL进行所有数据库工作。

答案 1 :(得分:12)

如果零配置是SubSonic的主要优势,您可以查看Fluent nHibernate或实体框架代码优先

来自RăzvanPanda的更新:流畅的NHibernate大部分已被淘汰,因为它包含在NHibernate本身的代码映射中,请参阅:notherdev.blogspot.ie/2012/02/

答案 2 :(得分:6)

原帖已有2年了。据我所知,ADO.NET实体框架已经成熟.net 4.有没有人对这个主题有任何新的反馈?

以下是自2008年首次发布以来EF增加的改进链接 http://blogs.msdn.com/b/adonet/archive/2009/05/11/update-on-the-entity-framework-in-net-4-and-visual-studio-2010.aspx

更新:我在堆栈溢出时发现这个线程很好地讨论了更新的EF:

Entity Framework 4 vs NHibernate

答案 3 :(得分:4)

Microsoft已经承认ADO.Net Entity Framework不是ORM(我目前找不到引用)。因此,如果您将实体框架视为查询引擎,那么显然它真的很擅长它的功能。对于完整的ORM解决方案,您可能希望在其他地方寻找。

以下博客文章似乎证实了这种差异:

http://blogs.msdn.com/dsimmons/archive/2008/05/17/why-use-the-entity-framework.aspx

答案 4 :(得分:3)

我使用过SubSonic,LinqToSql,LinqToEntities。现在我正在尝试NHibernate。现在 - 我喜欢NHibernate(可能因为我没有遇到足够的问题)。最糟糕的是 - LinqToEntities(当然这只是我的意见)。

答案 5 :(得分:0)

我确实遇到了SubSonic的问题。 SubSonic在具有相同名称但不同架构的表格上窒息死亡。我不想讨论构建数据库的最佳实践,因为我没有打电话给这样做。(当谈到提高声音并指出工作时,我宁愿保住我的工作。: ))

答案 6 :(得分:0)

我喜欢实体。需要一段时间才能弄清楚它的所有错误信息是什么意思,但是一旦你习惯它,它确实做得很好。它现在面临的最大缺点是没有真正支持断开连接。