【问题标题】:How do you decide on which ORM to use?你如何决定使用哪个 ORM?
【发布时间】:2008-11-04 16:49:15
【问题描述】:

城堡活动记录? 普通的NHibernate? 亚音速? 实体? 像 Nettiers 之类的东西?

我想用一个,但我知道的不够多,无法决定。 Nhibernate 似乎过于杀戮和复杂,但被广泛使用。亚音速看起来整洁而容易。但它稳定吗?我有 CodeSmith,我被指向 Nettiers,它看起来也很简洁,但也很复杂。其他人如何评估和决定使用什么?您是否制作了每个简单的小项目以查看功能? Eeeny、Meenie、Miney、Moe?

【问题讨论】:

    标签: orm data-layers


    【解决方案1】:

    我喜欢 NHibernate。它实际上并没有那么复杂,它出奇地灵活,并且不会用属性和其他不应该存在的时髦东西污染您的对象模型。

    我发现活动记录模式不像域模式那样适合像 C# 这样的静态类型语言,因为它会使模拟变得更加复杂。

    【讨论】:

    • 但另一方面,考虑到 OP 对 ORM 来说一般来说是新的,我猜想他第一次涉足这个领域会看起来像 ActiveRecord。它值得考虑 Castle.ActiveRecord 仅仅是因为它提供了对 nhibernate 的更温和的介绍。对我来说效果很好!
    【解决方案2】:

    我也更喜欢 NHibernate,并且同意如果您花一点点精力学习它,您就会意识到它并不像最初看起来那么复杂。您可以走很长的路,而不必了解它的所有功能。

    但是,您应该始终为手头的工作选择正确的工具。如果您正在构建一个具有接近真实领域模型的应用程序,那么 NHibernate 将是 IMO 的自动选择。您提到的其他人不是真正的对象关系映射器,而是代码生成器。这本身并不一定是坏事,但您必须评估一种方法何时比另一种更合适

    【讨论】:

    • 我想我正在寻找代码生成器。是否有任何体面的工具可以让使用 nhibernate 更轻松地进行映射?
    【解决方案3】:

    既然问题是“我该怎么选”而不是“我应该选什么”……:

    我会先选择看起来最容易使用的那个。 然后我会在谷歌上研究一下,看看它是否稳定。 然后我会自己对其进行压力测试,使用一些多线程优点和具有不同类型关系和继承的域结构。

    您还可以通过http://polepos.sourceforge.net/ 获得灵感 它是一个数据库性能基准,但主要用于 Java 框架。如果您愿意的话,您可以将源代码改编为 .net,它并不是非常复杂。

    也就是说,我目前最喜欢的是 ActiveRecord 和 LINQ。

    【讨论】:

      【解决方案4】:

      我想决定哪一个的最佳方法是尝试找到一个在您正在评估的 ORM 中具有解决方案的常见问题。您将获得有关编程范式、风格、代码量、复杂性等方面的想法

      【讨论】:

        猜你喜欢
        • 2011-01-13
        • 2016-10-23
        • 2011-02-12
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多