Ниже приведена модель класса и схема Oracle, которые я хотел бы сопоставить с использованием Fluent NHibernate.Fluent NHibernate HasMany в компоненте
public enum EnumA { Type1, Type2, Type3 };
public class ClassB
{
public virtual string Property1 { get; set; }
public virtual string Property2 { get; set; }
}
public class ClassA
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<EnumA, IList<ClassB>> MyDictionary { get; set; }
}
TableA (НОМЕР (38) ID ПК, VARCHAR2 (255) Имя)
TableB (НОМЕР (38) ID ПК FK, НОМЕР (38) Тип PK, VARCHAR (255) prop1, VARCHAR (255) Prop2)
Как определить класс отображения Fluent NHibernate?
Я не против вводить новый класс домена, если это необходимо. Я попытался следующие:
public class ClassB
{
public virtual string Property1 { get; set; }
public virtual string Property2 { get; set; }
}
public class classC
{
public virtual EnumA EnumA { get; set; }
IList<ClassB> ClassBList { get; set; }
}
public class ClassA
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<EnumA, classC> MyDictionary { get; set; }
}
со следующим отображением класса
public ClassAMap()
{
WithTable("ClassA");
Id(x => x.ID);
Map(x => x.Name);
HasMany(x => x.MyDictionary).AsMap<EnumA>(d => d.EnumA).Component(c =>
{
c.HasMany(e => e.ClassBList).Component(f =>
{
f.Map(x => x.Property1);
f.Map(x => x.Property1);
});
});
}
Однако это не создает действующую конфигурацию. Может ли кто-нибудь помочь?
Я не уверен, что это применимо напрямую, но см. Мой ответ здесь: http://stackoverflow.com/questions/1875466/auto-mapping-a-idictionarystring-myclass-with-fluent-nhibernate/2807566#2807566 –