代码之家  ›  专栏  ›  技术社区  ›  Eli Korvigo

与C 4.0[关闭]一起使用的最佳ORM

  •  32
  • Eli Korvigo  · 技术社区  · 15 年前

    最好的方法是使用一个像nhibertate或实体框架这样的ORM,或者做一个客户ORM。 我将使用此ORM进行C 4.0项目

    6 回复  |  直到 9 年前
        1
  •  60
  •   Panagiotis Kanavos    9 年前

    更新2016

    六年后情况就大不一样了。NHibernate几乎被抛弃了,其他替代品也被抛弃了(例如亚音速),实体框架也许是最常见的全功能ORM,人们已经开始转向像 Dapper 多年来,以最少的开销从查询映射到对象。

    应用程序场景也发生了变化。Web服务和RESTAPI不需要以牺牲内存和性能为代价加载和缓存一个大对象图,而是需要为大量较小的请求提供服务。这意味着一个完整的ORM开销不再可接受。

    这意味着模式和技术,如活动记录、每个请求的事务等,已经成为吞吐量和可伸缩性的杀手锏。

    目前最重要的功能之一是异步执行,以减少线程和CPU等待造成的浪费。NHibernate从未做过这种转变。

    原始答案

    定义“最佳”:它是最成熟的,有更多文档的,更大的社区,更主流的吗?

    NHibernate 更成熟,功能更丰富,具有更高级的社区,并且在MS决定再次中断兼容性时不太可能中断。 Entity Framework 更为主流,并得到了开箱即用的支持。你会发现更多的英孚初学者书籍,更多的NH高级书籍。

    一个好的选择是尝试一个简单的窗体,比如 亚音速的 一旦你了解了ORM的工作原理,各种各样的陷阱是什么,以及 SELECT N+1 手段[:P]

    不要试图创建自己的ORM,已经有几十个了!亚音速的, Castle ActiveRecord ,NH,EF(当然) LLBLGenPro

        2
  •  12
  •   Martin Fabik    15 年前

    如果你能花点钱,一定要看看 LLBLGEn Pro 3.0

    • 完全支持.NET 4.0,是一款成熟的产品。很好的支持也很有用。
    • 广泛的数据库支持(Oracle、MS SQL、Firebird、MySQL、PostgreSQL、Sysbase)
    • 优秀的设计师,模型第一支持,以及数据库第一支持

    如果你的预算很薄,那就试试看 NHibernate . 它也是一个成熟的产品,但是它有一个更大的学习曲线。如果你需要帮助,你可以随时打电话给Ayend:-)

    对于较小的项目,EF4.0是一个不错的选择。

        3
  •  8
  •   Reed Copsey    15 年前

    大多数ORM都有自己的优点和缺点。

    例如,实体框架有(巨大的?)在框架本身的优势,但它也相当重,而且有点难以站起来和运行(更陡的学习曲线)。

    有一些非常好,非常容易使用的商业形式。我正在使用 Lightspeed 在一个C 4项目中,对于这个特定的场景非常满意。

    这实际上取决于ORM需要什么。如果你想要非常快速和容易设置和使用,光速,亚音速,和其他非常好。如果您需要完整的功能,那么实体框架和nhibernate是很好的选择。

        4
  •  8
  •   Nasreddine    13 年前

    把ORM称为一般观点中最好的ORM是完全不可能的。每一个都是从不同的角度来看最好的。你选择了最适合你需要的。Linq2SQL是在考虑性能的情况下编写的,但它缺少对其他提供程序的支持,Linq2SQL速度非常快。然而,还有一些在处理SQL Server时速度可能不如Linq2SQL快,但它们支持各种各样的提供程序。最好的办法是列出您希望ORM为您的项目提供的功能,并选择一个满足您所有需要的功能。`您可以问这些问题,为您的项目选择正确的ORM。

    • 什么 数据库提供程序 你想让ORM支持吗?SQL Server、MySQL、Oracle等
    • 你需要 先建模型或先建数据库 支持?
    • 什么是我的 性能标准 [内存,处理]?
    • 你打算用在 Web应用程序或桌面应用程序 ?
    • 你有 分布式客户端 在你的申请中?
    • 名单还在继续……
        5
  •  2
  •   Sergio Tapia    15 年前

    在创建C应用程序时,我使用Linq to SQL作为主要ORM。我最终会转向实体框架,但现在这个框架确实很容易使用而且速度很快。

        6
  •  1
  •   Bharath K    15 年前

    我同意。_奇怪的是,选择正确的ORM将取决于您的需求。在Hibernate和实体框架上工作之后,我觉得后者更加用户友好,因为它是一个基于GUI的编辑器。在功能丰富性方面,nhibernate具有支持大量数据库提供者的优势。此外,定制nhibernate比调整实体框架容易得多。

    假设大多数工具都能满足您的核心需求,那么我更喜欢NHibernate,因为它是一个充满活力、富有吸引力的用户社区,是任何工具的一大优势。