【问题标题】:ASP.NET MVC and ORM SelectionASP.NET MVC 和 ORM 选择
【发布时间】:2010-11-03 12:11:52
【问题描述】:

我们正准备开始重新开发一个大型老化的内部企业应用程序。我们已决定使用 ASP.NET MVC,但正在考虑选择哪种对象关系映射 (ORM)。当然,有许多开源和付费的 ORM 实现可用。然而,NHibernate 似乎占据了最大的份额,而Entity Framework 是微软的新热点。

虽然我们正在研究和玩弄两者,但我们想向社区介绍他们更喜欢哪种 ORM(NHibernate、实体框架或其他)以及原因。

有点相似的 Stackoverflow 问题

额外的 .NET ORM 阅读

【问题讨论】:

  • 无意冒犯,但似乎之前有人问过这个问题:stackoverflow.com/search?q=.net+ormstackoverflow.com/questions/380620/… 已作为副本关闭。
  • 哇,我不知道我在搜索时怎么没有找到那个问题。谷歌和 SO 搜索都让我失望了。结束时没有冒犯,否则我不会问这个问题。 :)
  • 既然我同意这可能应该被关闭,最好删除问题或投票决定关闭它?
  • IainMH 下面的评论具有足够的价值,不应删除该问题。

标签: asp.net asp.net-mvc orm


【解决方案1】:

简答:两者都用(我真的同时用)...

使用 ORM 有多种可能性,一切都取决于您想要什么。

作为一个真正的 ORM 映射器,我强烈推荐 NHibernateFluent NH 映射。你需要大量的研究来构建一个漂亮的架构,但是没有什么能阻碍你。只需最少的妥协,您就可以获得真正的灵活性。

EF6x(恕我直言,核心不是 prod.-ready)被称为 ORM,但它生成的更接近于 DAL。有些事情是您无法使用 EF6 有效完成的。尽管如此,这仍然是我最喜欢的读取模型工具,而我确实将它与 NHibernate 结合使用(我将 NH 用于 DDD/写入模型)。

现在来性能 - 它总是有利有弊。如果您深入了解 ORM 架构(请参阅我的文章:avoid ORM bad habits),那么您会直观地找到使其更快的方法。这是我的另一篇关于如何使 EF6x 更快(至少在阅读情况下)的文章:EF6.x 5x faster

【讨论】:

    【解决方案2】:

    您应该看看Sharp Architecture 一个使用 NHibernate 的 ASP.NET MVC 应用程序框架。

    在过去的几年里,我使用了一些 O/RM,除了 NHibernate 之外没有其他选择。

    1. 是最成熟的。
    2. 它有大量的功能。
    3. 它背后有一个很好的社区。​​li>
    4. 它有一些很棒的辅助项目,例如Fluent NHibernate

    我不知道人们会在您链接到的问题之外向您提供哪些更多信息。

    【讨论】:

    • @Storm 谢谢,看起来链接失效了。我已经更新了指向 github 存储库的 url。
    【解决方案3】:

    疯狂的回答:没有。

    这并不是说如果使用得当,ORM 就不是很棒的技术。但在 2011 年,它们正迅速成为并非所有问题都是钉子的通用锤子。现代 ORM 中发生了很多事情,尤其是对于那些不熟悉它们的人来说,它们可能会混淆事物而不是帮助事物。或者,有时事情很简单,直接 SQL 是更好的选择。无论 ORM 有多好,抽象都会在某个时候泄漏。

    要看的另一面是整个 NoSQL 运动。这项技术仍然有点新,但对于新工作来说,它是一种必须考虑的数据访问策略,因为它在构建应用程序时需要花费很多时间。

    【讨论】:

    • OP 明确表示他们正在重新设计他们的企业应用程序,而不是开始学习一些东西。而当你想要持久化时,大多数时候 ORM 是最简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多