nhibernate - Entity Framework 4.1 VS Nhibernate,适合 ORM 中的菜鸟

标签 nhibernate entity-framework-4.1

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

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

我的评价标准

  1. 数据库访问速度
  2. 学习曲线(因为我是 ORM 新手)
  3. 社区支持
  4. 教程/书籍可用性
  5. 我应该考虑的其他事情(因为我对 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/

相关文章:

asp.net-membership - EF 4.1 Update 1 Code First + ASP.NET 成员资格提供程序

c# - 基类中的审计信息

ef-code-first - 如何使用 Entity Framework 4 Code-First 定义数据库 View ?

c# - NHibernate Linq 在 IQueryable 上使用 Between 子句

c# - 映射列表字典的替代方法?

sql-server - 尝试部署 Entity Framework 代码优先应用程序但运气不佳?最佳部署策略?

sqlite - 无法使用 Entity Framework 5 在 SQLite 数据库中插入记录

entity-framework-4.1 - Entity Framework 4.2 表值函数

nhibernate - CaSTLe ActiveRecord 表名称冲突

nhibernate - NHibernate System.IndexOutOfRangeException