2009-05-22 6 views
1

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?

+0

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 –

Antwort

0

Klasse B ist keine Komponente von A, es ist eine verwandte Entität mit einer eigenen Identität (ID, Typ), so dass es keine logische Komponente sein kann, da Komponenten ansonsten keine eigene Identität (PK) haben sie würden getrennte Einheiten sein.

Verwandte Themen