ADO.NET 实体框架:ORM 解决方案的决策制定

11

我正在选择ORM时为我的新应用程序寻找一些指南。我想评估EF、NHibernate和LINQ to SQL之间的差异。我需要来自这个美妙社区的专家声音。

  1. 可扩展性
  2. 学习曲线
  3. 易于使用
  4. 性能等方面进行评估。
1个回答

12

你列出的三个中,NHibernate 已经存在最久。如果你想使用一个证明过自己的工具,那么 NHibernate 可能是一个安全的选择。

四个指标(规模/学习曲线/易用性和性能)中它表现相当出色,虽然由于它已经存在比其他两个更长的时间,你可能会发现有更多的信息可用。

LINQ to SQL 发布的时间比 Entity Framework 更早,但只能运行在 SQL Server 上。它作为一个适合目的 ORM 工具运行得非常好,但不像 Entity Framework 那样功能丰富(提供了eSql等功能)。

理解 LINQ to SQL 很容易(取决于你对 LINQ 的了解),而且最近生成的查询质量也有所提高(与早期的 beta 版本相比)。我不确定它的可扩展性或性能表现如何,但你必须认为它与普通开发人员手写的 T-SQL 相当(好吧,这是一个猜测!)。它非常简单,并在 Visual Studio 中为你生成一个非常好的模型。

还有其他支持非 SQL Server 数据库的 (2) 替代方案

Entity Framework 是三者中最新的,因此仍然存在一些需要纠正的问题(希望在下一个版本中解决)。它可以与许多提供程序配合使用(不限于 SQL Server),并且具有额外的好处,例如 eSQL 和 (1)表格继承。起初学习它可能会有点棘手,但一旦你完成了一两个解决方案,就会变得可预测且容易实现。

由于它是最新的,所以在学习曲线方面需要更多的投入(还有更多需要学习的内容),而性能也不如人意(目前), 但它确实提供了一些有趣的好处(特别是对多个提供者的支持)。

我猜我的问题是 - 你只是在评估还是需要制作一个可用的ORM解决方案?

Entity Framework可能还没有准备好进行严肃的生产工作(除了较小的解决方案),这就让你选择了LINQ to SQL或NHibernate。如果你只使用SQL Server数据库,那么LINQ to SQL是一个有趣的选择。否则,NHibernate可能是进行严肃工作的最佳选择。

(1) [http://msdn.microsoft.com/en-us/data/cc765425.aspx] (2) [http://www.devart.com/dotconnect/linq.html]


1
  1. Linq 支持继承
  2. Mysql、Oracle 和 PostgreSQL 都有 Linq 提供程序。
- graffic
Linq to SQL 支持 Table-Per-Type 吗? - RobS
Entity Framework也是唯一一个能够正确支持三层设计的框架,其中数据和前端之间使用Web服务进行通信。 - Dave R
此外,我相信Entity Framework v2在N-Tier和SOA架构方面会更加出色。 - RobS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接