【问题标题】:ADO.NET Entity Framework: Decision Making between ORM solutionsADO.NET Entity Framework:ORM 解决方案之间的决策
【发布时间】:2010-09-25 20:52:50
【问题描述】:

在选择 ORM 时,我正在为我的新应用程序寻找一些指南。我想通过 NHibernate 和 LINQ to SQL 评估 EF。我需要来自这个美妙社区的专家声音。 您可以评估以下几点。

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

【问题讨论】:

    标签: entity-framework orm


    【解决方案1】:

    嗯,在您列出的三个中,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]

    【讨论】:

    • 1. Linq 支持继承 2。有针对 Mysql、Oracle 和 PostgreSQL 的 LINQ 提供程序。
    • Linq to SQl 支持 Table-Per-Type?
    • ....Entity Framework 也是唯一正确支持在数据和前端之间使用 Web 服务的 3 层设计的框架
    • 我相信,Entity Framework v2 在 N 层和 SOA 架构中应该要好得多。
    猜你喜欢
    • 2011-08-18
    • 2011-03-06
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多