Unten ist ein Klassenmodell und ein Oracle-Schema, das ich Fluent NHibernate zuordnen möchte.Fließfähiges NHibernate HasMany in Komponente
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 (NUMBER (38) ID PK, VARCHAR2 (255) Name)
TableB (NUMBER (38) ID PK FK, NUMBER (38) Typ PK, VARCHAR (255) Prop1, VARCHAR (255) Prop2)
Wie soll ich die Fluent NHibernate-Mapping-Klasse definieren?
Ich habe nichts dagegen, eine neue Domain-Klasse bei Bedarf einzuführen. Ich habe folgendes versucht:
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; }
}
mit den folgenden Abbildungsklassen
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);
});
});
}
Dies ist jedoch keine gültige Konfiguration erzeugt. Kann jemand helfen?
Ich bin mir nicht sicher, dass dies direkt gilt, aber sehen Sie meine Antwort hier: http://stackoverflow.com/questions/1875466/auto-mapping-a-idictionarystring-myclass-with-fluent-nhibernate/2807566#2807566 –