我正在选择ORM时为我的新应用程序寻找一些指南。我想评估EF、NHibernate和LINQ to SQL之间的差异。我需要来自这个美妙社区的专家声音。
- 可扩展性
- 学习曲线
- 易于使用
- 性能等方面进行评估。
我正在选择ORM时为我的新应用程序寻找一些指南。我想评估EF、NHibernate和LINQ to SQL之间的差异。我需要来自这个美妙社区的专家声音。
你列出的三个中,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]