FluentNHibernate升级后不会自动化

时间:2014-12-03 20:50:11

标签: nhibernate configuration fluent automapping

我目前正在升级一些底层库。我从NHibernate 3.1.0.4000转到3.3.1.4000,FluentNHibernate 1.2.0.712转到1.4.0.0

查询失败,因为自动化似乎不像过去那样发生。期望Property ObjectRecordId被自动化到object_record_id。我可以覆盖自动化并且有效:

public class ProcessLockMap : IAutoMappingOverride<ProcessLock>
{
    public void Override(AutoMapping<ProcessLock> mapping)
    {
        mapping.Map(x => x.ObjectRecordId).Column("object_record_id");
        mapping.Map(x => x.LockedBy).Column("locked_by");
        mapping.Map(x => x.LockedOn).Column("locked_on");
        mapping.Map(x => x.LockerId).Column("locker_id");
    }
}

我们的配置类如下所示:

        var domainAssembly = typeof (MyEndpoint).Assembly;

        var sessionFactory = Fluently.Configure()
            .Database(MyPersistenceConfiguration.FromConfig)
            .Mappings(
                m =>
                    {
                        m.AutoMappings
                            .Add(new AutoPersistenceModel(new AutoMappingConfiguration())
                                    .AddEntityAssembly(domainAssembly)
                                    .ApplyDefaults()
                                    .UseOverridesFromAssembly(domainAssembly));
                        m.HbmMappings.AddFromAssembly(domainAssembly);
                    })
            .BuildConfiguration()
            .AddDefaultCustomMethodCalls()
            .BuildSessionFactory();

这就是我们过去成功实现流畅自动化的方法。我不确定在v1.2和v1.4之间会发生什么变化会导致这种情况无法正常工作。

有什么想法吗?

一些额外的信息......  当服务总线启动时,我在日志中看到以下内容:NHibernate.Cfg.Configuration在程序集中找不到映射文件

另外需要注意的是,我们为域使用了一个基础框架,其中包含FluentNHibernate.Cfg.Db.PersistenceConfiguration的实现,它创建了如下所示的配置:

var config = new MyPersistenceConfiguration()
                    .Driver(domainConfig.Driver)
                    .Dialect(domainConfig.Dialect)
                    .Provider(domainConfig.Provider)
                    .ProxyFactoryFactory(domainConfig.ProxyFactoryFactory)
                    .ConnectionString(domainConfig.ConnectionString);

ProxyFactoryFactory方法在3.1中标记为Obsolete,在3.3中删除。我们正在使用Castle作为容器,但Castle和NHibernate似乎不再支持代理了。该方法描述了&#34;移动到FluentConfiguration(Fluently.Configure()。ProxyFactoryFactory(...))&#34;,但我不确定如何实现它。

0 个答案:

没有答案