36

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

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

4

5 回答 5

52

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

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

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

就用吧!

于 2009-08-29T09:12:14.760 回答
13

我肯定会说使用fluent-nhibernate。请注意,它可能不一定像您希望的那样顺利。

  1. 关于版本依赖

    1. 当升级到新版本的 FNH 需要我升级到新版本的 NH(我认为是 2.0 到 2.1)时,我遇到了“反向”依赖问题。这对我来说不是一个大问题。
    2. 我最近(今天早上)将 NH 2.1.1 放入 FNH 1.0 RTM(随 2.1.0 分发)而没有任何戏剧(还)。
  2. 编辑:自从写这篇文章以来,FNH 已经成熟到我认为这不再是一个真正的问题的地步了 映射支持——一些映射还不能使用流畅的 nhibernate。但是,这不是避免 FNH 的原因,因为混合 fluent-xml 映射允许您在 fluent 无法映射它的情况下回退到传统 xml(尽管这仅适用于每个类的粒度)。映射示例:

    1. 还不能映射字段 - http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/a7787927dafd23a/84ce2616946a18d7
    2. 无法映射字典http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/d38b6c72250cd2fb的某些时间- 实际上从我收集的内容来看,此功能存在但尚未在主线中。
  3. 复合复杂性因子。从它的声音来看,您将同时学习 FNH 和 NH。对于大多数相当简单的应用程序来说,这很好——事实上,FNH 通常非常好,以至于您几乎不需要了解 hbm.xml 映射。但是如果你想做一些相当复杂的事情,它很少会在第一轮工作,你会想知道它是 PEBKAC、流利还是 NH 问题。比我希望的更多的时候,我最终编写了传统的 xml 映射(当然,无论如何你都在这样做,但最好不要花费更多的精力而不是首先摆弄 fluent)。

于 2009-11-12T03:11:18.183 回答
9

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

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

于 2009-08-29T09:25:11.350 回答
4

就我个人而言,我对流利的 nhibernate 并没有真正了解,因为我对映射文件感到满意。使用 Visual Studio 创建映射文件轻而易举,您可以为 xml 文件设置架构,从而为您提供映射文件的智能感知。我同意编译时语法检查是使用 fluent-nhibernate 的一个优势,但是当我已经熟悉 XML 映射时,我很难证明学习 fluent API 的合理性。也许我应该克服我的嗜睡并已经学习它...... :-)

于 2009-11-05T11:44:54.647 回答
2

Fluent N-Hibernate 确实是 NHibernate 的一个很好的包装器。在 Fluent 中管理映射比 xml 映射好得多。当您使用 Fluent 时,开发会变得更快......

最好使用 Entity Developer 创建实体和数据库模式。

于 2012-11-08T06:11:55.403 回答