Nhibernate ORM工具-十字路口?

Nhibernate ORM工具-十字路口?,nhibernate,orm,codesmith,.nettiers,Nhibernate,Orm,Codesmith,.nettiers,嗨,我似乎正处在ORM工具的十字路口,我想听听那些面临类似挑战的人的建议。在过去,我一直使用CodeSmith和NetTiers模板来生成我的DAL,这一切都很好,但是出于某种原因,我决定放弃这一点 因此,我站在十字路口,发现了以下几点:- 我看过PLINQO(LINQtoSQL),它似乎做得很好,但是由于微软对LINQtoSQL不确定,这可能不是一个好的选择 Linq对实体的影响——这仍处于初级阶段,我可能错了,但人们正在抱怨存储过程的膨胀以及如何使用存储过程 我看过nHibernate,这可

嗨,我似乎正处在ORM工具的十字路口,我想听听那些面临类似挑战的人的建议。在过去,我一直使用CodeSmith和NetTiers模板来生成我的DAL,这一切都很好,但是出于某种原因,我决定放弃这一点

因此,我站在十字路口,发现了以下几点:-

  • 我看过PLINQO(LINQtoSQL),它似乎做得很好,但是由于微软对LINQtoSQL不确定,这可能不是一个好的选择
  • Linq对实体的影响——这仍处于初级阶段,我可能错了,但人们正在抱怨存储过程的膨胀以及如何使用存储过程
  • 我看过nHibernate,这可能是最好的选择,但它似乎是一个陡峭的学习曲线
  • LLblgen也一样
  • 亚音速-对此不确定
  • 坚持使用经过尝试和测试的NetTiers,忘记膨胀,忘记您被迫使用企业库,忘记它创建的动态sql,忘记他们在论坛上几乎没有活动,忘记这一点并使用它 我已经拥有Codesmith,不想购买其他任何东西,生成的代码必须在中等信任模式下工作

    可能还有其他我错过的。我正在寻找解释为什么ORM工具值得一看的答案


    谢谢Richard,我在上一个项目中使用了netTiers。但在我目前正在工作的一个方面,我们正在尝试Linq 2实体。关于Linq2EF不成熟的说法你是对的。我们总是抱怨它,这就是为什么我们使用T4模板从EDMX文件生成代码。我们还更改了这些模板,因此我们有了业务对象、注入接口和DAL+DAO。我们很高兴知道它现在是如何工作的。好的是我们可以对实体使用LINQ


    否则我也会建议你使用流利的nHibernate。这是我们也考虑过的事情之一。但是你得自己写很多东西。你不习惯在.netTiers中生成所有代码


    由于《亚音速3》刚推出一周,我建议你去看看。根据我所看到的,它看起来很有希望。而且它使用T4,所以你可以根据你的需要对其进行切片和切分。

    关于使用ORM的原因,这里有一个指向a的链接,说明了这一切。至于我的经验,就在一年多前,我正在寻找使用ORM,我选择了NHibernate

    对我来说,持久性是一个已解决的问题,除了某种形式的从域模型到关系数据的映射之外,我再也不用担心它了。我研究了Linq到SQL,但它没有给我足够的控制权来控制数据如何映射到我的对象,实体框架也没有达到我喜欢的程度。我的团队的另一个主要项目是二手NetTiers和CodeSmith,正如你所说,膨胀、代码生成(以及它的数量)让我感到有点不舒服。最后,我选择了NHibernate,因为对我来说,它是最成熟的ORM之一,它提供的功能不仅支持细粒度的对象模型,而且还内置了查询功能,并且固有地解决了缓存等其他性能问题


    是的,我承认学习曲线相当陡峭,但如果你投入时间,你将从中获得巨大的好处。和的博客是关于NHibernate的信息宝库。通过这个,NHibernate有一些LINQ支持,但目前正在整合一些功能,这些功能将在NHibernate中提供完整的LINQ支持。因此,对于NHibernate来说,这一切都是可行的,但归根结底,这取决于你对什么最满意。

    我试了几个星期,最后与NHibernate达成了和解。它很容易定制。有一个学习曲线,需要花费更长的时间来建立像linq到sql这样的东西,但其好处是它看起来不像魔术。您将了解它是如何工作的,并能够根据您的需要对其进行定制。社区也很好,有很多可用的文档。在我看来,这是现代ORM(无代码生成,可以使用POCO)和成熟度之间的一个很好的平衡。

    我认为目前最著名和最强大的两个ORM工具是nHibernateLLBLGen Pro

    nHibernate=非常面向领域驱动

    LLBLGen Pro=面向数据驱动

    它们都是优秀的,对于每个项目,根据其性质,一个可能比另一个更合适。它还常常归结为个人选择和偏好,甚至是开发团队的文化


    正如我最后所说的,总的来说,它们都是优秀的,并且都有一些轻微的优点/缺点。

    你可以试试DataObjects.NET。此ORM使用“代码优先”方法,支持DB模式升级和LINQ。查看此简要说明。

    您好,谢谢您,我们将介绍亚音速和流畅的nHibernate。另一个快速问,你提到T4模板这些是什么?非常感谢Richard4,这是VisualStudio的非梅尼昂功能。它们是带有代码的模板,可以为您生成任何东西。“但是您必须自己编写很多东西”我有点不同意。@Arnis:在netTiers中,所有类都是为您生成的,还有存储过程。以及两者之间的一切。在FnH中,您必须编写自己的类和映射等。因此,与netTiers相比,在netTiers中,您需要编写更多的代码,在netTiers中,您只需使用CodeSmith为您生成所有内容。在netTiers中,您所要做的就是创建数据库、编辑CodeSmith配置并点击generate。就是这样。看这个:你能提供更多关于你的项目和需求的细节吗?ORM的选择可以依赖于很多方面。例如,您是要开始新项目还是需要支持遗留数据库?@Alex-将是新项目,howeve