我有一个映射的问题,简化我的关系看起来像这样。 我有父类:流利NHibernate的子类映射使用DiscriminateSubClassesOnColumn问题
public abstract class DocumentType
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
和两个子类:
public class UploadedFileDocument : DocumentType
{
}
public class ApplicationFormDocument : DocumentType
{
}
这样映射:
public DocumentTypeMap()
{
Schema("Core");
Id(x => x.Id);
Map(x => x.Name).Length(128).Not.Nullable();
DiscriminateSubClassesOnColumn("Type");
}
public class UploadedFileDocumentMap : SubclassMap<UploadedFileDocument>
{
}
public class ApplicationFormDocumentMap : SubclassMap<ApplicationFormDocument>
{
}
然后,我有一个FK另一个实体DocumentType,这样映射:
public FileConversionMap()
{
Schema("Core");
Id(x => x.Id);
References(x => x.Application).Not.Nullable();
References(x => x.DocumentType).Not.Nullable().Fetch.Select();
}
我的问题是,当我取回从DB行是这样的:
Session.Query<FileConversion>().AsQueryable();
所有行回来与DocumentType
存在DocumentType
类型,不是孩子的类型(即实际类型的属性,即。当我做.GetType()
,要么UploadedFileDocument
或ApplicationFormDocument
)
道歉,如果这只是我昏暗。但是,我怎样才能确定我有哪种类型的DocumentType
...是我的映射错误?
我结束了一个不同的数据库模式,所以一切都改变了我,但大卫的回答是非常有帮助的,我敢肯定他是对的,所以标记为接受的答案 – soupy1976