【发布时间】:2010-09-25 20:52:50
【问题描述】:
在选择 ORM 时,我正在为我的新应用程序寻找一些指南。我想通过 NHibernate 和 LINQ to SQL 评估 EF。我需要来自这个美妙社区的专家声音。 您可以评估以下几点。
- 可扩展性
- 学习曲线
- 易于使用
- 性能 等。
【问题讨论】:
标签: entity-framework orm
在选择 ORM 时,我正在为我的新应用程序寻找一些指南。我想通过 NHibernate 和 LINQ to SQL 评估 EF。我需要来自这个美妙社区的专家声音。 您可以评估以下几点。
【问题讨论】:
标签: entity-framework orm
嗯,在您列出的三个中,NHibernate 的使用时间最长。如果您想使用具有良好记录的东西,那可能是一个安全的起点。
这四个指标(规模/学习曲线/易用性和性能)相当均匀,尽管您可能会发现可用信息更多,因为它比其他两个更长。
LINQ to SQL 的发布时间比实体框架长,但仅针对 SQL Server 风格运行。它作为一个适合目的的 ORM 工作得很好,但不像实体框架(它提供 eSql 等)那样功能丰富。
LINQ to SQL 非常容易掌握(取决于您对 LINQ 的了解),并且最近生成的查询的质量有所提高(自早期的 beta 版本以来)。我不确定它的扩展性或性能如何,但您必须认为它与普通开发人员的手写 T-SQL 相当(好吧,现在这是一个疯狂的假设!)。它非常简单,并在 Visual Studio 中为您生成了一个非常好的模型。
还有其他 (2) alternatives 用于非 SQL Server 数据库支持
实体框架是三者中最新的,因此仍有一些问题需要纠正(希望在下一个版本中)。它将与许多提供程序一起使用(不仅限于 SQL Server),并且具有其他优点,例如 eSQL 和(1) Table-Per-Type inheritance。一开始学习可能有点棘手,但一旦你用它完成了一两个解决方案,它就会变得可预测且更易于实施。
由于它是最新的,它在学习曲线方面需要更多的时间(还有更多要学习的东西),而且性能......不太理想(目前),但它确实提供了一些有趣的好处(尤其是对多个提供商的支持)。
我想我的回答是 - 您只是在评估还是需要生成一个可行的(生产就绪的)ORM 解决方案?
实体框架可能还没有为严肃的生产工作做好准备(除了较小的解决方案),这让您只能使用 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]
【讨论】: