我正在第一次评估 ORM。请建议我应该为下一个项目选择哪一个。
我首先使用 EF 4.1 代码编写了几个示例代码。在开始使用 Nhibernate 进行相同的练习之前,我想知道是否有人已经在生产应用程序中拥有这两者的经验。
我的评价标准
- 数据库访问速度
- 学习曲线(因为我是 ORM 新手)
- 社区支持
- 教程/书籍可用性
- 我应该考虑的其他事情(因为我对 ORM 很菜鸟)
我希望在生产级应用程序中具有 ORM 经验的人能够回答我的问题。
先谢谢了!!!
我知道问这个问题可能有点危险;)
最佳答案
使用过 EF 4.1 和 CaSTLe ActiveRecord(基于 NHibernate)后,我对它们的评价如下:
数据库访问速度 - NHibernate 对于任何远程复杂的事情,其他方面都差不多。 EF 的问题在于它创建了如此复杂的 SQL,以至于很难知道如何优化它,甚至很难知道是否可以这样做。
学习曲线 - 我个人发现 EF 更容易上手,但其他人可能有不同的感觉,两者肯定都有一个学习曲线。
社区支持 - 取决于您所说的“支持”的含义。您可以在网络(以及本网站)上找到有关这两者的大量信息。 NHibernate是开源的,而EF是由MS控制的。
教程/书籍 - 我相信目前有更多可用于 EF 的“官方”资源,但在论坛上搜索可能会找到在书籍中找不到的内容。
其他 - 认识到 ORM 的目的是简化开发人员的数据访问层。然而,这两个 ORM(以及几乎所有其他重量级 ORM)都希望您使用某些编码模式来实现这种简化。虽然编码模式实现并不是一件坏事(有些人认为这是必须的),但在选择编码模式之前,您肯定需要做好准备。
关于nhibernate - Entity Framework 4.1 VS Nhibernate,适合 ORM 中的菜鸟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825552/