我正在第一次评估ORM。请建议我为下一个项目选择哪一个。
我先用EF 4.1代码编写了几个示例代码。在与Nhibernate开始相同的练习之前,我想知道是否有人已经在生产应用程序中有过这方面的经验。
我的评估标准
我希望在生产级应用程序中有ORM经验的人回答我的问题。
提前致谢!!!
我知道这问题可能有点危险;)
答案 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有两个主要问题
如果您想要简单/快速但不支持我会选择Massive,如果您想要简单和MS支持但在某些方面有限,我会选择EF,如果您有时间学习正确的ORM,我会选择NHibernate。
希望这会有所帮助。
答案 2 :(得分:1)
嗯,我的个人经历Nhibernate一直是正确的选择,在复杂的情况下给了我更好的时间结果,而且学习起来容易得多。
我首先学习了它,然后尝试了实体框架,我发现学习nhibernate更容易。尽管在那一刻我对ORM一无所知。
社区支持和教程和书籍我可以说它们既好又有很多可供学习的材料。
现在我可以使用它们但仍然喜欢Nhibernate。