FluentNHibernate或端口到NHibernate的代码映射

Fir*_*iro 7 nhibernate nhibernate-mapping fluent-nhibernate nhibernate-mapping-by-code fluent-nhibernate-mapping

我有几个项目使用NH和FNH生成映射(一些Fluent一些Automapped).我仍然需要一些bug和缺少的功能,但似乎FNH可能因为集成到NHibernate中的代码映射而死亡.

问题:有助于FNH或将映射迁移到代码映射或confORM并修复问题/实现功能吗?

Ted*_*Net 7

在我们的办公室,我们已经使用NHibernate 3年了.我们一直在考虑转向Fluent Nhibernate但从未采取行动.使用hbm.xml文件仍然是最容易调试/更改的.这些xml文件的两个常见问题是它们在创建sessionfactory期间都经过验证,并且它们不是重构安全的.

由于一个错误,我不得不更新NHibernate的新版本(我们使用的是NHib 2.1.2GA),当我实现3.2GA时,我们也获得了使用loquacious映射的能力(通过代码映射).我决定使用Loquacious over Fluent,因为我没有依赖于另一个项目(Fluent),并且如果代码映射被破坏,NHibernate将不会被发送.

但请注意,Loquacious映射也不完整.当我通过代码映射所有内容时,我发现像property-ref这样的基本内容并不总是实现.因此,即使它已发货,也不是100%完成.虽然这不会令人感到震惊,但它有缺陷.是.真.;-)

有关(报告)错误的更多信息,请查看NHibernate错误数据库:https://nhibernate.jira.com/browse/NH

希望这可以帮助.此致,特德


Fir*_*iro 5

thx to @TedOnTheNet我将继续使用并为FNH做出贡献,因为它需要一段时间,直到某些地区的代码映射达到FNH

  • 自动映射
  • Fluent API更好地说明了哪些可能性
  • 更冗长的映射
  • .Database(SQLiteConfiguration.Standard.InMemory()) 还是比较容易理解

    .DataBaseIntegration(db =>
    {
        db.ConnectionString = ???;
        db.Dialect<SQLiteDialect>();
        db.Driver<???>();
    });
    
    Run Code Online (Sandbox Code Playgroud)

和一些功能:

  • CompositeId和Table per Subclass
  • 旧列的默认值
  • 物业参考

更新: hbm.xml(和FluentMapping)的某些功能根本无法通过代码进行映射: