【问题标题】:Whats the best feature of the ORM framework you use [closed]您使用的 ORM 框架的最佳功能是什么[关闭]
【发布时间】:2011-03-11 12:12:25
【问题描述】:

我想知道您使用的 orm 框架的哪些最佳功能以及您发现自己最常使用的功能是什么?

您选择使用的框架的原因是什么?

我只是想比较它们,想知道是否有任何比另一个更具优势。 (这一切都很好用谷歌搜索,但你无法超越第一手的用户体验!)

具体来说,我正在寻找一个 .Net 框架,但仍然对其他语言中的 ORM/功能感到好奇。

提前致谢!

【问题讨论】:

    标签: .net database orm frameworks persistence


    【解决方案1】:

    我们最近刚刚经历了在实体框架和 NHibernate 之间做出决定的过程。尽管我最初的倾向是倾向于 NHibernate,但考虑到微软在过去几年中实际坚持使用一项技术的记录并不那么出色(例如:Linq To SQL,在版本 1 或更新的示例中)如果 MS 决定放弃 ASP.NET Ajax 库客户端模板,请查看this),我们仍然决定使用 Entity Framework。

    我们选择它的原因如下:

    1. 我们是一家仅限 Microsoft 的商店,因此它与我们现有的工具集很好地集成在一起。
    2. 我们喜欢它在 Visual Studio 2010 中具有内置建模功能这一事实。
    3. 我们喜欢能够将数据库模式逆向工程为实体数据模型的能力(这真的很酷)。
    4. 我们喜欢这样一个事实,即我们需要的一切都开箱即用,与 NHibernate 不同的是,我们必须使用不同的工具来进行可视化建模,映射文件有时会很麻烦)和它没有与 Visual Studio 很好地集成。

    使用实体框架是否是正确的选择还有待观察。微软总是有可能拉另一个“Linq To SQL”并说,“嘿,我们正在丢弃实体框架,对此感到抱歉,你应该选择 NHibernate”。但我们决定,既然现在 VS 2010 是 2.0,那么它至少很有可能会存在几年。

    因此,尽管我们比 Entity Framework 更喜欢 NHibernate 久经考验的业绩记录,但出于我上面提到的原因,我们还是选择了 Entity Framework。

    我认为您只需要查看每种工具的优缺点,检查所有选项,并尽可能做出最佳决定。

    【讨论】:

    • 虽然这始终是可能的,但我认为 Microsoft 不太可能(在几年内)拔掉 EF 的插头。他们正在大力投资 EF。
    • @Steven - 时间会证明一切的 :),但我同意并且确实希望我们都是对的。
    • NHibernate 可用于数据库模式逆向工程场景。
    • @Michael Maddox - 我们只是喜欢 EF 为该功能提供的与 Visual Studio 的集成。也就是说,我们喜欢 .edmx 文件生成和直观查看模式的能力,几乎不费吹灰之力,也没有第三方插件/工具等。
    • 请注意 EF 有很多错误(4.0 并不像 3.5 那样糟糕)。我一个人在一个项目上工作,我找到了8 serious bugs,其中最严重的是this one;与之相关的问题所有都会发布在stackoverflow上。
    【解决方案2】:

    我想知道您使用的 orm 框架的最佳功能是什么,您发现自己最常使用哪些功能?

    我编写了自己的 ORM。功能包括:

    • 每个表的机器生成代码,基于抽象表定义

    • 一个库/框架,作用于表定义和运行时数据,以实现如下功能:

      • 创建表(或更新表定义)
      • CRUD
      • 触发存储过程,在表内容更改时创建历史记录
      • 支持树状数据(使用嵌套集)
      • 将应用程序类型(C# 类实例)转换为 SQL 数据记录,反之亦然

    您选择使用的框架的原因是什么?

    我不想使用现有的 ORM,因为我担心我迟早会发现它没有实现我想要的某些功能,然后我会发现很难添加该功能。

    我想使用 ORM,因为我不想为每个单独的表编写和维护代码。

    【解决方案3】:

    我使用 Apache 的 empire-db

    主要原因是我摆脱了用于定义数据库方案的 XML 或注释。我真的很讨厌将复杂性从编码转移到配置,不得不处理数万亿个 xml 配置文件,甚至更糟的是使用注释进行分布式配置。

    【讨论】:

    • 我相信 Fluent NHibernate 或代码优先实体框架 4,例如,将是 .NET 等价物。
    【解决方案4】:

    我写了Object Data Blocks 来提供以下出色的功能

    • 使用 .net 类来描述 db 架构 - 无映射文件
    • 为所有数据库访问创建存储过程
    • 类和查询都支持继承
    • 为 DBA 自动部署或生成 sql 脚本

    最好的总结是对象持久化风格的 ORM。

    【讨论】:

      【解决方案5】:

      我编写了我的 ORM,因为它可以与设备上的 .NET Compact Framework 以及完整的 .NET Framework 一起使用而无需重新编译。

      您选择的原因是什么 你用的框架?

      • 不需要从类继承指定的基类型或实现任何类型的接口。

      • 它支持 .NET Compact Framework 中未提供的嵌套事务范围。

      • 它允许我创建具有域模型的数据访问层,可以在设备和桌面或 Web 应用程序上使用,无需交叉编译或复制。

      【讨论】:

        【解决方案6】:

        我想知道最好的功能是什么 您使用的 orm 框架以及什么 您发现自己最常使用的功能?

        我想说 Linq 支持是我的杀手级 ORM 功能。现在,针对数据库编写 Linq 查询需要 ORM。 Linq 在我的查询中为我提供了针对数据库的编译时静态类型检查,现在在代码和数据库不同步的某些情况下,这会给我带来编译器错误。我倾向于处理变化很大(敏捷)的数据库,并与开发人员团队合作,其中数据库架构更新可以来自任何团队成员。

        您选择的原因是什么 你用的框架?

        关于这个主题还有很多其他问题和答案:

        NHibernate, Entity Framework, active records or linq2sql

        【讨论】:

          猜你喜欢
          • 2011-06-01
          • 1970-01-01
          • 2010-09-18
          • 1970-01-01
          • 1970-01-01
          • 2011-05-17
          • 2015-01-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多