【问题标题】:ORM on which standards i can select?ORM 我可以选择哪些标准?
【发布时间】:2010-12-28 08:31:40
【问题描述】:

问:这个问题是关于如何为我的 Web 应用程序计算或选择方便的 ORM。 当开始一个新的 Web 应用程序时,我可以根据哪些标准认为特定 ORM 比另一个更好地用于我的项目或案例(Web 应用程序)?

我的问题的另一部分:当我开始任何 Web 应用程序时,我会使用三层:

  1. DB 层(其中包含 连接,并处理 CRUD 操作)
  2. Managers 层(数据访问 层)我的每个表的一个类 db(与 上一层)它包含 CRUD 特定表的操作 以及其他必需的操作。
  3. 接口层..

并且我使用对象数据源。这被视为 ORM(作为一个概念)还是我对这个概念的理解有误。

注意:我还是这个领域的初学者,每天我都在学习更多关于 Web 开发的知识。 请对此点进行解释和建议。

提前致谢。

【问题讨论】:

  • 我经常使用 SQL Server,但有时我使用 mysql 或 informix..
  • 我只使用 linq2sql。据我所知 linq2sql 仅支持 MSSQL。
  • 实体框架是一个很好的起点,特别是对于 SQL 服务器
  • 您是否将 S#arp 架构作为您架构的示例?在我的项目中,我通常使用类似的东西。
  • 天哪,我希望人们不要推荐 S#arp 架构,它失败了。

标签: c# .net asp.net orm wiki


【解决方案1】:

至于 ORM,一切都与品味有关。 nhibernate 和 Entity 框架是最常见的。

【讨论】:

  • taste ,我认为有一些标准,我问他们以及 sql to linq 怎么样..
  • 标准是最适合您的需求。我是 Subsonic 的粉丝,虽然有时我需要为此做一些额外的工作,但我还是会使用它,但我就是喜欢它。
【解决方案2】:

你不会找到具体的选择标准——这是一个品味和偏好的问题,但你可以找到比较特征here

【讨论】:

    【解决方案3】:

    我将Devart LinqConnect 用于中小型项目(尤其是Web 项目),我将Entity Framework 用于大型项目。这些产品方便灵活,让您快速上手。 LinqConnect 包括允许使用 Oracle、MySQL、PostgreSQL、SQLite 的提供程序。我使用 3-rd 方提供者进行实体框架定制。

    【讨论】:

      【解决方案4】:

      正如@MikeAinOz 之前提到的,Entity Framework 是一个很好的开始,您也可以在其中连接其他数据库。这个示例也是了解程序如何分层的一个很好的起点:

      http://layersample.codeplex.com/releases/view/47627

      【讨论】:

        【解决方案5】:

        最著名的是 nhibernate 和 EF,我个人更喜欢 EF,它的速度比 nhibernate 好(通过 linq),对于使用 EF,我认为Code First 是最有用的启动。

        对于选择哪个 ORM(在 EF 和 nhibernate 之间),您可以看到 Ayende Rahien 的 this blog,他对 nhibernate 非常了解,在这篇文章中他说 nhibernate 的成熟度更好,但 linq2EF 比 nhibernate 更好,简单示例 I能给你的是: 您有一个 2 级主详细信息,在 nhibernate 中您应该执行 hql 从详细项目中检索具有特定标准的项目,但在 EF 中您可以简单地做到这一点,在 EF 中我们有 Entity Functions 可以解决问题,我希望以后会更好用。

        【讨论】:

        • 请注意,在 Ayende 博客文章的底部,他指出 NH3(及其新的 linq 提供程序)将缩小 Linq 性能方面的差距。 NH3 几周前去了 GA。我已经使用了一段时间了,与 NH2 相比,我对它的性能感到非常满意。
        • @Brook,你知道 nhibernate3 在 linq 中实现了 SelectMany 吗?我很想找到一个 SelectMany 如何更改为在 nhibernate 中工作。
        【解决方案6】:

        我正在阅读由编写 hibernate 的人撰写的关于 hibernate 的书,并且从广义上讲,任何将关系模型映射到对象模型(例如将外键转换为包含的对象[s])的东西都是 ORM。

        作者将 ORM 归为不同的类别,像 Nhibernate 属于完整的 ORM 的类别,它在运行时生成 SQL 用于 ex..

        其他一些工具,如 LLBGen,需要通过连接到数据库来创建静态 dll,然后使用它们。

        在选择 ORM 时,您应该查看用户群,如果 ORM 处于活动状态,例如..新版本和快速错误修复,最近 Hibernate 可能是使用最广泛的一种,在 .net 中有 Fluent Nhibernate可以在没有 xml 文件的情况下进行配置,hibernated 为此使用带注释的类。

        我个人建议你使用基于 Hibernate 的 ORM,在 ROR 活动记录中我猜是标准...

        【讨论】:

          【解决方案7】:

          对于微软世界,坚持使用 ado.net 实体框架
          对于开源世界,坚持使用 nhibernate。

          【讨论】:

            【解决方案8】:

            关于简单的数据库访问,似乎有很多意见认为哪种方式是访问数据库的最佳方式。

            我目前正在使用NHibernate,它在 MS Sql 和 MySql 中运行良好。我找到了一篇博客文章,展示了如何使用 Nhibernate here 连接到 MYSQL。

            对我来说,决定因素是查看您将要使用的数据库,然后从那里做出决定。 Scott Guthrie 宣布了使用实体框架版本 4 的 Code First 框架。虽然我知道 Entity Framework 4.0 可以与 Mysql (link) 一起使用,但我不确定 Code First。代码优先开发教程可以在here找到。

            最终,我认为它们都做几乎相同的工作,尽管如果我开始研究 ORM 并想要一些简单的东西,我可能会采用 Code First 方法,因为它看起来真的很容易。但我没有这方面的经验。我只是读过它。

            希望这会有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-21
              • 1970-01-01
              相关资源
              最近更新 更多