我偶然发现了以下问题:我想从配置文件配置数据库,但是映射流畅(喜欢它!)配置代码如下所示:
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吗?或者可能是我做错了或者这只是一个错误?
谢谢。
答案 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的回答)。