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

时间:2011-05-19 15:27:50

标签: nhibernate fluent-nhibernate

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

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>

和cfg.Configure()之后;所有看起来都很好的配置指向LinFu字节码提供程序但是在第三行后我看到配置改为使用Castle。我查看了Fluent的代码,我可能错了,但看起来它们在PersistenceConfiguration的构造函数中覆盖PersistenceConfiguration.cs(第50行)中的这个属性:

values[ProxyFactoryFactoryClassKey] =  DefaultProxyFactoryFactoryClassName;

Fluent需要Castle吗?或者可能是我做错了或者这只是一个错误?

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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"));

答案 1 :(得分:0)

ProxyFactoryFactory方法链接Configure

Fluently.Configure()
  .ProxyFactoryFactory(name);

如果你不在1.2,我相信它是在Database电话下(见RexM的回答)。