У меня есть абстрактный класс и его подклассы, и я хочу сопоставить это с моей базой данных, используя 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: не удалось скомпилировать документ сопоставления: (XmlDocument)
----> NHibernate.DuplicateMappingException: дублирование сопоставления класса / сущности NamespacePath.StringFieldValue
Есть идеи?