我在 Fluent/NHibernate 中的每类表层次结构存在映射问题。从数据库中检索记录时,我不断收到错误消息(错误类型异常)
具有 id 的对象:2445763 不属于指定的子类:ClassA(加载对象属于错误的类 [ClassB])(记录 2445763 在类型列中确实具有值“2”)
在我的域中,我有 EntryBase、ClassA 和 ClassB。类定义为
public abstract class EntryBase
{
public virtual int Id {get;set;}
public virtual string CommonProperty1 {get;set;}
*... (lots of other common properties)*
public virtual string CommonPropertyN {get;set;}
}
public class ClassA : EntryBase
{
public virutal string ClassAOnlyProperty {get;set;}
}
public class ClassB : EntryBase
{
public virutal string ClassBOnlyProperty {get;set;}
public virutal int ClassBOnlyOtherProperty {get;set;}
}
映射是:
public class EntryBaseMap : ClassMap<EntryBase>
{
public EntryBaseMap()
{
Table("MySingleTable");
Id(x => x.Id, "RecordId").GeneratedBy.Identity();
Map(x => x.CommonProperty1, "Field1Name");
...
Map(x => x.CommonPropertyN, "FieldNName");
DiscriminateSubClassesOnColumn<string>("Type");
}
}
public class ClassAMap : SubclassMap<ClassA>
{
public ClassAMap()
{
DiscriminatorValue("1");
Map(x => x.ClassAOnlyProperty);
}
}
public class ClassBMap : SubclassMap<ClassB>
{
public ClassBMap()
{
DiscriminatorValue("2");
Map(x => x.ClassBOnlyProperty);
Map(x => x.ClassBOnlyOtherProperty);
}
}
知道可能有什么问题吗?我已经能够正确存储 B 类的记录,但是当我检索它们时,它正试图将它们加载为 A 类。这是映射问题吗?