NHibernate还是流利的NHibernate?

NHibernate还是流利的NHibernate?,nhibernate,orm,fluent-nhibernate,alt.net,Nhibernate,Orm,Fluent Nhibernate,Alt.net,我很想听听其他人关于他们是否会选择哪一个的意见(请不要“neithers”),以及为什么 使用fluent的缺点是什么?(可能是版本依赖性?) 优点、缺点、经验等。流利的NHIbernate位于NHIbernate之上,因此它实际上不是两者之间的选择。如果您打算使用NHibernate,请选择在其上使用Fluent NH,以节省大量精力 流利的NHibernate很棒,没有它我不会使用NHibernate。您可以流畅地映射所有实体(提供编译时检查和自动测试支持),而不必维护繁琐的xml文件并记住

我很想听听其他人关于他们是否会选择哪一个的意见(请不要“neithers”),以及为什么

使用fluent的缺点是什么?(可能是版本依赖性?)
优点、缺点、经验等。

流利的NHIbernate位于NHIbernate之上,因此它实际上不是两者之间的选择。如果您打算使用NHibernate,请选择在其上使用Fluent NH,以节省大量精力

流利的NHibernate很棒,没有它我不会使用NHibernate。您可以流畅地映射所有实体(提供编译时检查和自动测试支持),而不必维护繁琐的xml文件并记住它们的语法/DTD

它还可以根据默认和/或您自己的自定义约定自动映射您的实体


就用它吧

将Fluent-NHibernate与NHibernate一起使用的优点是,如果将映射搞砸了,会出现编译时错误,而不是运行时错误。在重构代码时,您还可以获得更好的体验,因为在重命名属性或其他内容时,映射会保持最新,而不必记住手动修改XML映射文件


Fluent NHibernate最大的缺点是,它仍处于开发的早期阶段,随着框架开发的进展,有很大的风险会破坏更改。

就个人而言,我对Fluent NHibernate没有太多了解,因为我对映射文件很熟悉。使用VisualStudio创建映射文件是件轻而易举的事,您可以为xml文件设置模式,从而在映射文件上提供intellisense。我同意编译时语法检查是使用fluent-nhibernate的一个优势,但是当我已经熟悉XML映射时,我很难证明学习fluent-API是正确的。也许我应该忘掉我的死亡,并且已经学会了…:-)

我肯定会说用流利的nhibernate。只是要知道,它可能不一定像你希望的那样平稳

  • 关于版本依赖性

  • 当升级到FNH的新版本需要升级到NH的新版本(我认为是2.0到2.1)时,我遇到了“反向”依赖问题。这对我来说不是什么大问题
  • 我最近(今天早上)在FNH1.0RTM中加入了NH2.1.1(这是在2.1.0中发布的),但还没有任何戏剧
  • 编辑:因为写这篇文章,FNH已经相当成熟,我认为这不再是一个真正的问题了 映射支持-某些映射在fluent nhibernate中尚不可用。但是,这并不是避免FNH的原因,因为混合的fluent xml映射允许您在fluent无法映射传统xml时回退到传统xml(尽管这仅限于每类粒度)。映射示例:

  • 尚未映射字段-
  • 无法映射字典的某些时间-实际上根据我收集的信息,此功能存在,但尚未在主线中
  • 复合复杂性因子。从它的声音中,你将同时学习FNH和NH。对于大多数相当简单的应用程序来说,这是很好的-事实上FNH通常非常好,以至于您需要对hbm.xml映射了解很少。但是,如果你想做一些相当复杂的事情,那么在第一次尝试时,它几乎不会起作用,你会怀疑这是一个PEBKAC、fluent还是NH问题。通常情况下,我最终编写了传统的xml映射(当然,您无论如何都在这样做,但最好不要花费更多的精力,而不是首先处理fluent)


  • 流畅的N-Hibernate确实是NHibernate的好包装。在Fluent中管理映射要比xml映射好得多。当你学习流利时,发展会变得很快


    最好使用Entity Developer来创建实体和数据库架构。

    是的,对不起,我的问题措辞应该稍微不同;)谢谢你的回答。是的,我非常同意。我们与Rhino和Geo库一起使用了Fluent。我们偶尔会遇到版本差异!我赞成。我刚开始使用Fluent NHibernate,我不会(不会)回头看。令人惊讶的是,映射类是多么容易。这是真的吗,fluent不再受支持了?@Johnny\u D它还没有死,但是开发速度慢了很多,因为代码映射进入了这个领域。谢谢你的想法-我听到了你的第3点。最后,我选择了FNH,但我也在做一个小项目——这是一个非常好的主意,因为我觉得我学到了很多关于NH的知识,并且对实际发生的事情感到更舒服。(顺便说一句,我必须查找PEBKAC,但是是的-这是我的大多数问题的根源;)仅供参考,最新版本现在支持字段。您始终可以从fluent映射生成hbm.xml并手动编辑它们。不需要手工编写,我要补充的是,使用Fluent配置和PersistenceSpecificationFluent可以轻松地进行单元测试映射,但Fluent仍然不允许使用自定义参数化类型映射属性。在尝试解决以下问题时遇到此问题:根据我的经验,我使用FluentNHibernate时遇到的错误映射大多发生在运行时,即应用程序首次使用NHibernate时。只有简单的重构/类型不匹配/拼写错误等才会导致编译时错误。hbm.xml文件在NHibernate中用于映射,但Fluent NHibernate在C#代码中替换了它。它很容易发现问题并进行维护。我在3年前问过这个问题,这个月它就关闭了?呵呵。