将文件中的DB配置与Fluent NHibernate映射混合

将文件中的DB配置与Fluent NHibernate映射混合,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我偶然发现了以下问题:我想从配置文件配置DB,但映射很流畅(我喜欢!)配置代码如下所示: var cfg = new Configuration(); cfg.Configure(); var fluentCfg = Fluently.Configure(cfg) .Mappings( m => m .FluentMappin

我偶然发现了以下问题:我想从配置文件配置DB,但映射很流畅(我喜欢!)配置代码如下所示:

var cfg = new Configuration();
cfg.Configure();
var fluentCfg = Fluently.Configure(cfg)
                        .Mappings(
                            m => m
                               .FluentMapping
                               .AddFromAssembly(Assembly.GetExecutingAssembly));
但是,配置文件有一个属性:

<property name="proxyfactory.factory_class">
  NHibernate.ByteCode.LinFu.ProxyFactoryFactory, 
  NHibernate.ByteCode.LinFu
</property>
你需要城堡吗?或者我做错了什么,或者这只是一个bug


谢谢。

我不知道这是否是您想要的,但它可能会帮助您。您可以在代码中公开配置并进行所需的任何更改

var cfg = Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("ConnectionStringName")).ShowSql())
                .Mappings(m =>
                {
                    m.FluentMappings.AddFromAssemblyOf<MapMarker>();
                    m.FluentMappings.Conventions.AddFromAssemblyOf<ConventionMarker>();
                })
                .ExposeConfiguration(x => x.SetProperty("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu"));
var cfg=fluntly.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c=>c.fromConnectionString WithKey(“ConnectionString”)).ShowSql()
.Mappings(m=>
{
m、 FluentMappings.AddFromAssemblyOf();
m、 FluentMappings.Conventions.AddFromAssemblyOf();
})
.ExposeConfiguration(x=>x.SetProperty(“proxyfactory.factory_class”,“NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu”);

有一个
proxyFactory
方法链接到
Configure

Fluently.Configure()
  .ProxyFactoryFactory(name);

如果您不在1.2上,我相信它在
数据库调用下(请参阅RexM的回答)。

当然,但想法是从配置文件配置DB(以便我可以在部署期间更改conn.strings、DB-s等),并将映射保留到fluent(以便有一个好的强类型、编译时可验证的映射)。
Fluently.Configure()
  .ProxyFactoryFactory(name);