实体框架4.1 VS Nhibernate,适用于ORM中的noob

时间:2012-01-11 19:38:14

标签: nhibernate entity-framework-4.1

我正在第一次评估ORM。请建议我为下一个项目选择哪一个。

我先用EF 4.1代码编写了几个示例代码。在与Nhibernate开始相同的练习之前,我想知道是否有人已经在生产应用程序中有过这方面的经验。

我的评估标准

  1. 数据库访问速度
  2. 学习曲线(因为我是ORM的新手)
  3. 社区支持
  4. 教程/图书可用性
  5. 我应该考虑的任何其他事情(因为我是ORM的noob)
  6. 我希望在生产级应用程序中有ORM经验的人回答我的问题。

    提前致谢!!!

    我知道这问题可能有点危险;)

3 个答案:

答案 0 :(得分:6)

使用EF 4.1和Castle ActiveRecord(基于NHibernate),我会按如下方式评价:

数据库访问的速度 - NHibernate用于远程复杂的任何东西,否则大致相同。 EF的问题在于它创建了这样复杂的SQL,很难知道如何优化它,或者甚至可能这样做。

学习曲线 - 我个人认为EF更容易上手,但其他人可能会有不同的感受,而且两者肯定都有学习曲线。

社区支持 - 取决于“支持”的含义。您可以在网络(和本网站)上找到大量信息。 NHibernate是开源的,而EF则由MS控制。

教程/书籍 - 我相信目前有更多“官方”资源可用于EF,但在论坛上搜索可能会让你获得书中找不到的内容。

Anthing else - 意识到ORM的目的是简化开发人员的数据访问层。但是,这两个ORM(以及几乎所有其他重量级ORM)都希望您使用某些编码模式来实现这种简化。虽然编码模式执行并不是一件坏事(有些人认为这是必须的),但在选择之前你需要做好准备。

答案 1 :(得分:3)

如果你是ORM的菜鸟并且只需要基本功能,你可能会发现实体框架和Nhibernate过度杀戮,应该看看像Massive这样的轻量级产品:

https://github.com/robconery/massive

那说你与EF vs NH有两个主要问题

  1. EF就是微软支持的所有功能,因此默认情况下所有工具都使用EF。使用EF简化初学者代码。
  2. NHibernate更成熟,功能更强大(如果需要的话)还有一个很好的开发社区和很多关于它的博客信息。
  3. 如果您想要简单/快速但不支持我会选择Massive,如果您想要简单和MS支持但在某些方面有限,我会选择EF,如果您有时间学习正确的ORM,我会选择NHibernate。

    希望这会有所帮助。

答案 2 :(得分:1)

嗯,我的个人经历Nhibernate一直是正确的选择,在复杂的情况下给了我更好的时间结果,而且学习起来容易得多。

我首先学习了它,然后尝试了实体框架,我发现学习nhibernate更容易。尽管在那一刻我对ORM一无所知。

社区支持和教程和书籍我可以说它们既好又有很多可供学习的材料。

现在我可以使用它们但仍然喜欢Nhibernate。

相关问题