ASP.NET MVC和ORM选择

27

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

在我们进行研究并试验两者时,我们想向社区询问他们更喜欢哪个ORM(NHibernate、Entity Framework或其他),以及为什么。

类似的Stackoverflow问题

其他.NET ORM阅读

  • 为什么要使用Entity Framework?是为什么呢?
  • 最佳的.NET ORM工具

  • 不是有意冒犯,但似乎这个问题之前已经被问过了:http://stackoverflow.com/search?q=.net+orm。http://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net-closed 被关闭了。 - Corbin March
    哇,我不知道在搜索问题时为什么没有找到那个。谷歌和stackoverflow的搜索都让我失望了。对关闭问题并不感到冒犯,因为否则我也不会问那个问题。 :) - ahsteele
    既然我同意这个问题可能应该关闭,那么是删除问题还是投票关闭更好呢? - ahsteele
    IainMH的评论价值足以使问题不应被删除。 - Robert Harvey
    3个回答

    13

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

    在过去的几年中,我使用了几个O/RM,但是无论如何都不会选择除了NHibernate以外的任何东西。

    1. 它是最成熟的。
    2. 它有大量功能。
    3. 它有一个强大的社区支持。
    4. 它有一些很棒的辅助项目,比如Fluent NHibernate

    我不知道人们在链接的问题上能够提供什么更多的信息。


    @Storm 谢谢,看起来是链接失效了。我已经更新了URL,指向GitHub存储库。 - Iain Holder

    2
    疯狂的回答:没有。
    这并不是说ORM在正确使用时不是很棒的技术。但是在2011年,它们正在迅速成为通用的万能工具,而不是所有问题都是钉子。现代ORM中发生了很多事情,特别是对于不熟悉它们的人来说,它们可能会使问题变得更加混乱,而不是帮助解决问题。或者,有时候事情足够简单,直接使用SQL是更好的选择。无论ORM有多好,抽象层都会在某个地方泄漏。
    另一方面要考虑的是整个NoSQL运动。这项技术还有点新,但对于新工作来说,它是一种必须考虑的数据访问策略,因为它可以消除构建应用程序时的许多垃圾代码。

    3
    OP 明确表示他们正在重新设计企业应用程序,而不是开始学习某些东西。当您需要持久性时,大多数情况下 ORM 是最简单的解决方案。 - Luka Ramishvili

    0

    简短回答:两者都要用(我真的都用)...

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

    作为一个真正的ORM映射器,我强烈推荐NHibernateFluent NH映射。你需要进行大量的研究来构建一个好的架构,但是一旦完成,就没有任何阻碍了。只需最小的妥协,你就能获得真正的灵活性。

    EF6x(核心版本在我看来还不够成熟)被称为ORM,但它生成的更接近于数据访问层(DAL)。有一些事情你不能有效地使用EF6来完成。尽管如此,这仍然是我用于读模型的最喜欢的工具,同时我也将其与NHibernate结合使用(其中NH我用于DDD/写模型)。

    现在来谈谈性能 - 总是有利有弊。如果你深入研究ORM架构(请参阅我的文章:避免ORM的坏习惯),那么你会直观地发现如何使其更快。这是我另一篇关于如何使EF6x 5x 更快(至少对于读取情况)的文章:EF6.x 5x faster


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接