Mam klasę abstrakcyjną i jej podklasy i chcę ją zmapować do mojej bazy danych przy użyciu NHibernate. Używam Fluent i read on the wiki, jak wykonać mapowanie. Ale kiedy dodaję mapowanie podklasy, generowany jest wyjątek NHibernate.DuplicateMappingException podczas mapowania. Czemu?Wyjątek NHibernate DuplicateMappingException podczas odwzorowywania klasy abstrakcyjnej i podklasy klasy abstrakcyjnej
Oto moje (uproszczone) zajęcia:
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;
}
}
}
a mapowania:
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);
}
}
i wyjątek:
NHibernate.MappingException: Nie można skompilować dokument mapowania : (XmlDocument) ----> NHibernate.DuplicateMappingException: Powielanie mapowania klasy/jednostki Na mespacePath.StringFieldValue
Jakieś pomysły?
Tak - używam tylko jawnych mapowań, ale myśl przyszła mi do głowy .. Muszę sprawdzić, czy to z jakiegoś powodu automatycznie zmapowało podklasę. Czy to prawda? – stiank81
Po raz pierwszy używam SubclassMap. ClassMap nie są zautomatyzowane, ale czy może to być SubclassMaps? Nie mam tak dużego doświadczenia z Fluent .. – stiank81
http://stackoverflow.com/questions/1538248/fluent-nhibernate-mapping-a-class-with-subclass-problem/1538419#1538419 możesz obejrzeć tutaj na przykład – Sly