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


我在选择ORM时正在为我的新应用程序寻找一些指导。我想评估EF over NHibernate和LINQ to SQL。我需要来自这个精彩社区的专家发言。 您可以评估以下几点。

  1. 可扩展性
  2. 学习曲线
  3. 使用方便
  4. 性能 等等。

9567
2017-12-08 14:45


起源



答案:


嗯,在你列出的三个中,NHibernate已经存在时间最长。如果您想使用具有良好记录的东西,这可能是一个安全的起点。

它在四个指标(规模/学习曲线/易用性和性能)中非常均匀,尽管您可能会发现有更多可用信息,因为它比其他两个更长。

LINQ to SQL的发布时间比实体框架更长,但只针对SQL Server版本运行。它作为一个适合用途的ORM非常有效,但不像功能框架那样功能丰富(它提供了eSql等)。

LINQ to SQL非常容易掌握(取决于您对LINQ的了解),并且最近生成的查询的质量得到了提高(自早期的测试版以来)。我不确定它的扩展或表现有多好,但你必须认为它与普通开发人员的手写T-SQL相提并论(好吧,现在这是一个疯狂的假设!)。它非常简单,并在Visual Studio中为您生成一个非常好的模型。

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

实体框架是三者中最新的,因此仍有一些问题需要纠正(希望在下一版本中)。它可以与许多提供程序(它不仅限于SQL Server)一起使用,并且具有额外的优点,例如eSQL和 (1)Table-Per-Type继承。一开始学习起来可能有点棘手,但是一旦你用它做了一两个解决方案,它就变得可以预测并且更容易实现。

由于它是最新的,它在学习曲线方面需要更多一点(还有更多需要学习的东西),而且性能是......不太理想(目前)但它确实提供了一些有趣的好处(特别是支持多个提供商)。

我想我的回答是 - 您只是评估还是需要生成可行的(生产就绪)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 ]


12



1. Linq支持继承2.有Mysql,Oracle和PostgreSQL的LINQ提供程序。 - graffic
Linq到SQl支持Table-Per-Type? - RobS
....实体框架也是唯一一个在数据和前端之间正确支持Web服务的3层设计的框架 - Dave R
在N层和SOA架构中,实体框架v2应该更好,所以我相信。 - RobS


答案:


嗯,在你列出的三个中,NHibernate已经存在时间最长。如果您想使用具有良好记录的东西,这可能是一个安全的起点。

它在四个指标(规模/学习曲线/易用性和性能)中非常均匀,尽管您可能会发现有更多可用信息,因为它比其他两个更长。

LINQ to SQL的发布时间比实体框架更长,但只针对SQL Server版本运行。它作为一个适合用途的ORM非常有效,但不像功能框架那样功能丰富(它提供了eSql等)。

LINQ to SQL非常容易掌握(取决于您对LINQ的了解),并且最近生成的查询的质量得到了提高(自早期的测试版以来)。我不确定它的扩展或表现有多好,但你必须认为它与普通开发人员的手写T-SQL相提并论(好吧,现在这是一个疯狂的假设!)。它非常简单,并在Visual Studio中为您生成一个非常好的模型。

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

实体框架是三者中最新的,因此仍有一些问题需要纠正(希望在下一版本中)。它可以与许多提供程序(它不仅限于SQL Server)一起使用,并且具有额外的优点,例如eSQL和 (1)Table-Per-Type继承。一开始学习起来可能有点棘手,但是一旦你用它做了一两个解决方案,它就变得可以预测并且更容易实现。

由于它是最新的,它在学习曲线方面需要更多一点(还有更多需要学习的东西),而且性能是......不太理想(目前)但它确实提供了一些有趣的好处(特别是支持多个提供商)。

我想我的回答是 - 您只是评估还是需要生成可行的(生产就绪)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 ]


12



1. Linq支持继承2.有Mysql,Oracle和PostgreSQL的LINQ提供程序。 - graffic
Linq到SQl支持Table-Per-Type? - RobS
....实体框架也是唯一一个在数据和前端之间正确支持Web服务的3层设计的框架 - Dave R
在N层和SOA架构中,实体框架v2应该更好,所以我相信。 - RobS