我使用Nhibernate和Fluent,並遇到繼承問題。Fluent NHibernate繼承問題
這裏我DB模式
桌腳
- IDBASE(PK)
- 字段1
- TYPE
表T1
- IDBASE(PK和FK)
- 字段2
- 字段3 ...
我的映射文件是:
public class BaseMap: ClassMap<BASE>
{
public BaseMap()
{
Id(x => x.Id, "IDBASE").GeneratedBy.Identity();
Map(x => x.Field1);
DiscriminateSubClassesOnColumn("TYPE");
}
}
public class T1Map: SubclassMap<T1>
{
public T1Map()
{
Table("T1");
KeyColumn("IDBASE");
DiscriminatorValue("T1");
Map(x => x.Field2).Not.Nullable();
Map(x => x.Field3).Not.Nullable();
}
}
我用FluentMappings,而不是自動映射。
這裏我實體:
public abstract class BASE
{
public virtual long IdBase{ get; set; }
public virtual string Field1 { get; set; }
}
public class T1: BASE
{
public virtual string Field2 { get; set; }
public virtual string Field3 { get; set; }
}
T1實體從基實體繼承,問題是,當我試圖讓一個排的NHibernate儘量選擇在基表字段2和字段3,而他們應該T1選擇表。
我已經嘗試了幾十個黑客,但它仍然無法正常工作,如果有人認爲它會非常有幫助。
非常感謝。