我有以下情况
public abstract class BaseClass
{
public virtual int Id {get; set};
public virtual string Name {get; set;}
}
public class FirstSubClass : BaseClass
{
//properties and behaviour here
}
public class SecondSubClass : BaseClass
{
//properties of SecondSubclass Here
}
public class ProcessStep
{
public virtual IList<BaseClass> ContentElements {get; set;}
}
对于映射,我使用了以下代码片段:-
this._sessionFactory =
Fluently.Configure().Database(SQLiteConfiguration.Standard
.ConnectionString(@"Data Source=SqliteTestSqlDataAccess.s3db; Version=3; New=True; Pooling=True; Max Pool Size=1;"))
.Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(assemblyWithDomainClasses).Conventions.Add(DefaultCascade.All())))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
默认情况下,fluent 将忽略抽象基类 BaseClass。但是在ProcessStep类中有返回IList的属性 ContentElements ,我得到一个异常:- NHibernate.MappingException :关联引用未映射的类:BaseClass
如果我使用 IncludeBase(typeof(BaseClass)) 包含基类,那么它可以正常工作,但它会为 BaseClass 和 Derived 类创建一个表,并且记录与 FK-PK 关系链接(每个子类的表)。我想要实现的是每个具体类的表。也就是说,每个派生类都有自己的表,其中将有派生类的所有属性+基类中的属性。知道如何实现吗?