我只是想做一个快速调查,看看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允许您导出它创建的映射,您可以使用这些导出不丢失您已经完成的任何映射工作.
使用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)
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |