流畅的Nhibernate自动映射。关联引用未映射的基类

流畅的Nhibernate自动映射。关联引用未映射的基类,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我有以下情况: AssemblyX与db实体一起引用外部assemblyY,并将其类用作基类AssemblyX必要时添加一些导航属性 当然,我可以复制所有这些实体并使用automapper来解决我的问题,但我有理由继承现有的实体 因此,我在assemblyY中创建了Foo{}类,并在assemblyX中创建了Bar:Foo{}。将fluent自动映射配置为忽略Foo(.IgnoreBase())。一切都很好。但是assembly有另一个实体Rab(由fluent automapping覆盖),该

我有以下情况:

AssemblyX与db实体一起引用外部assemblyY,并将其类用作基类AssemblyX必要时添加一些导航属性

当然,我可以复制所有这些实体并使用automapper来解决我的问题,但我有理由继承现有的实体

因此,我在assemblyY中创建了
Foo{}
类,并在assemblyX中创建了
Bar:Foo{}
。将fluent自动映射配置为忽略
Foo(.IgnoreBase())
。一切都很好。但是assembly有另一个实体
Rab
(由fluent automapping覆盖),该实体具有指向
Foo
的导航属性。这导致了一个异常:“表Rab中的关联引用了一个未映射的类:Foo”

公共类Foo/.IgnoreBase()-我只需要DB中的派生条
{
公共虚拟Guid Id{get;set;}
}
公共类酒吧:富
{
公共虚拟Guid Id{get;set;}
//一些新特性
}
公共类Rab
{
公共虚拟Guid Id{get;set;}
public virtual Foo Foo//对未映射类的引用,我无法将类型更改为Bar(外部程序集)
}
我怎样才能解决它。我试图继承Rab并创建带有Bar类型的
新Foo
属性,但没有成功


提前谢谢你的建议

您可以使用自定义IAutomappingConfiguration来确定应映射的类型或成员:

class MyConfig : DefaultAutomappingConfiguration
        {
            public override bool ShouldMap(Type type)
            {
                return  !(typeof(Foo)).IsAssignableFrom(type);
            }

            public override bool ShouldMap(Member member)
            {
                return  !(typeof(Foo)).IsAssignableFrom(member.PropertyType);                }
        }
然后您可以像这样使用配置:

AutoPersistenceModel model = new AutoPersistenceModel(new MyConfig());
最后:

Fluently.Configure()

                    .Mappings(m => m.UsePersistenceModel(model))
                    .BuildSessionFactory();
Fluently.Configure()

                    .Mappings(m => m.UsePersistenceModel(model))
                    .BuildSessionFactory();