根据您的经验,您有多少人会推荐流利的NHibernate而不是Nhibernate为我的新项目做事的方式?

Sri*_*ddi 8 fluent-nhibernate

我只是想做一个快速调查,看看Fluent Nhibernate是否受到好评或是否有很多问题.我喜欢Nhibernate,但我确实看到xml的问题要做映射.

所以,我期待社区成员获得一些见解并帮助我挑选一个.

我目前不考虑linq2sql或实体框架.

Ste*_*ons 11

我喜欢Fluent NHibernate,如果你要开始一个新项目,我认为它已经足够成熟了.在新项目中使用它应该允许Fluent NHibernate项目随着您的进展而继续成熟.有可能破坏更改(最近发生在约定映射中),但您应该能够处理这些更改.我在映射方面遇到了一些问题,但该项目对错误报告非常敏感,并且大部分都按预期工作.

映射选项包括:

  • Xml映射 - NHibernate标准.维护难题众所周知,但优点是您可以访问NHibernate提供的所有配置选项.还有一些较少使用的配置选项仍在添加到Fluent(至少上次我注意了).所以,如果你期待一些疯狂的映射,你可能想要考虑这个选项.

  • 标准制图 - 由Fluent提供.您可以通过代码创建映射,并且更好地进行重构和创作.根据我的经验,没什么可说的,除此之外它运行良好并且是对xml选项的重大改进.

  • 自动映射 - 由Fluent提供.允许您按约定映射对象属性,它会尝试自动创建映射.这是一个好主意,但我认为它还有一些成熟的事情要做.我目前正在使用这种映射方法,它工作正常,但我最终编写了大量的约定并指定了对象关系,它不觉得它从标准映射中节省了很多精力.

流畅的NHibernate还提供了很好的测试帮助程序来测试映射和一些配置API,可以更容易地配置NHibernate.总的来说,这是一个很好的项目,它为NHibernate提供了一些不错的附加功能.


编辑:

还有一点需要注意:如果您从Fluent NHibernate开始并确定它不适用于您的场景,您可以轻松地迁移回xml映射.流畅的NHibernate允许您导出它创建的映射,您可以使用这些导出不丢失您已经完成的任何映射工作.


Bay*_*del 5

使用Fluent Nhibernate而不是vanilla NH的最佳优势之一是使用PersistenceSpecification进行了很好的集成测试<T>:

[Test]  
public void TestProductSave()  
  {  
   new PersistenceSpecification<Product>()  
      .CheckProperty(x => x.ProductName, "Wax")  
      .CheckProperty(x => x.Price, 20)  
      .VerifyTheMappings();  
  }  
Run Code Online (Sandbox Code Playgroud)