Nhibernate 使用UseOverridesFromAssemblyOf不';t调用基类的重写类

Nhibernate 使用UseOverridesFromAssemblyOf不';t调用基类的重写类,nhibernate,fluent-nhibernate,automapping,Nhibernate,Fluent Nhibernate,Automapping,我正在使用fluent nHibernate的自动映射,非常简单,如下所示: Fluently.Configure() .Database(MsSqlConfiguration.MsSql2008 .ConnectionString(c => c .Server("(local)\\sql2008") .Database("nHibernate_test")

我正在使用fluent nHibernate的自动映射,非常简单,如下所示:

Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
            .ConnectionString(c => c
                .Server("(local)\\sql2008")
                .Database("nHibernate_test")
                .TrustedConnection()))
            .Mappings(m => m.AutoMappings.Add(
                AutoMap.AssemblyOf<Domain.Airport>(cfg)
                .UseOverridesFromAssemblyOf<ReaderMappingOverride>()
                ))
流利。配置()
.数据库(MsSqlConfiguration.MsSql2008
.ConnectionString(c=>c
.Server(“(本地)\\sql2008”)
.数据库(“nHibernate_测试”)
.TrustedConnection())
.Mappings(m=>m.AutoMappings.Add(
自动装配(cfg)
.UseOverridesFromAssemblyOf()的
))
我的重写类是这样的:

public class ReaderMappingOverride : IAutoMappingOverride<Domain.Reader>
{
    public void Override(AutoMapping<Domain.Reader> mapping)
    {
        //use the reader ID as identifier of the class, instead of the ID field defined in superclass Entity
        mapping.IgnoreProperty(r => r.Id);
        mapping.Id(r => r.ReaderNumber);
    }
}
公共类ReaderMappingGoverride:IAutoMappingOverride
{
公共无效替代(自动映射)
{
//使用读取器ID作为类的标识符,而不是超类实体中定义的ID字段
mapping.IgnoreProperty(r=>r.Id);
Id(r=>r.ReaderNumber);
}
}
其中Reader是一个抽象基类。 如果我为每个子类使用一个单独的重写类,它就可以正常工作。 有没有办法为抽象类的所有子类定义重写

谢谢,

约翰尼

好的,刚才回答了我自己的问题- 我的问题是,我试图将从Reader类开始的继承权映射到一个表中。但是自动映射会自动忽略所有抽象类。我所做的只是将其添加到配置部分:

.Mappings(m => m.AutoMappings.Add(
                AutoMap.AssemblyOf<Domain.Airport>(cfg)
                .IncludeBase<Domain.Reader>()
(顺便说一句,Fluent nHibernate网站中给出的示例使用的方法是“type.in(…”,该方法在.net 3.5中不存在…)
那很好。
希望这有助于

public override bool IsDiscriminated(Type type)
    {
       //this line indicates that the readers heirarchy should be all in one table, instead of seperate tables for every type of reader
        bool ret = type.IsSubclassOf(typeof(Domain.Reader)) || type == typeof(Domain.Reader) ;
        return ret;
    }