【发布时间】:2010-06-15 08:05:04
【问题描述】:
我有一个抽象类和它的子类,我想使用 NHibernate 将它映射到我的数据库。我正在使用Fluent 以及如何进行映射。但是当我添加子类的映射时,会在映射时抛出 NHibernate.DuplicateMappingException 。为什么?
这是我的(简化的)类:
public abstract class FieldValue
{
public int Id { get; set; }
public abstract object Value { get; set; }
}
public class StringFieldValue : FieldValue
{
public string ValueAsString { get; set; }
public override object Value
{
get
{
return ValueAsString;
}
set
{
ValueAsString = (string)value;
}
}
}
还有映射:
public class FieldValueMapping : ClassMap<FieldValue>
{
public FieldValueMapping()
{
Id(m => m.Id).GeneratedBy.HiLo("1");
// DiscriminateSubClassesOnColumn("type");
}
}
public class StringValueMapping : SubclassMap<StringFieldValue>
{
public StringValueMapping()
{
Map(m => m.ValueAsString).Length(100);
}
}
还有例外:
> NHibernate.MappingException : Could not compile the mapping document: (XmlDocument)
----> NHibernate.DuplicateMappingException : Duplicate class/entity mapping NamespacePath.StringFieldValue
有什么想法吗?
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping abstract-class