Tôi có một lớp trừu tượng, và lớp con của điều này, và tôi muốn ánh xạ điều này đến cơ sở dữ liệu của tôi bằng cách sử dụng NHibernate. Tôi đang sử dụng Fluent và read on the wiki cách thực hiện ánh xạ. Nhưng khi tôi thêm ánh xạ của lớp con một NHibernate.DuplicateMappingException được ném khi nó được ánh xạ. Tại sao?NHibernate DuplicateMappingException khi ánh xạ lớp trừu tượng và lớp con
Dưới đây là của tôi (đơn giản hóa) lớp:
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;
}
}
}
Và ánh xạ:
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);
}
}
Và ngoại trừ:
NHibernate.MappingException: Không thể biên dịch các tài liệu bản đồ : (XmlDocument) ----> NHibernate.DuplicateMappingException: Lớp trùng lặp/ánh xạ thực thể Na mespacePath.StringFieldValue
Bất kỳ ý tưởng nào?
Vâng - Tôi chỉ sử dụng ánh xạ rõ ràng, nhưng suy nghĩ vượt qua tâm trí của tôi .. Tôi phải có một cái nhìn để xem nếu nó vì một lý do nào đó tự động ánh xạ lớp con. Phải không? – stiank81
Đây là lần đầu tiên tôi sử dụng SubclassMap. ClassMap không được tự động hóa, nhưng có thể là SubclassMaps được không? Tôi không có nhiều kinh nghiệm với Thông thạo .. – stiank81
http://stackoverflow.com/questions/1538248/fluent-nhibernate-mapping-a-class-with-subclass-problem/1538419#1538419 bạn có thể xem tại đây ví dụ – Sly