2009-10-07 7 views
0

I ont une classeParent wich contient un tableau de 3 enfantobjets de classe (Child [] ChildArray). J'ai une base de données TableauMyTable avec des champs [FLD_01], [FLD_02], [FLD_03]. Comment puis-je la carte [FLD_01] à ChildArray [0], [FLD_02] à ChildArray [1] etc?Mapping à un élément d'un tableau

+0

@npeBeg: Je me demandais: êtes-vous conscient des relations un-à-plusieurs dans un RDMBS? –

+0

Malheureusement, je ne peux pas changer la structure de DB, donc la seule chose que je peux faire est de procéder de cette façon "proctologue" malgré que je pleure chaque fois que je regarde dans la DB: '( – npeBeg

Répondre

0

je le résoudre comme ceci:

class Parent 
{ 

    public Parent() 
    { 
    Children = new Child[3]; 
    } 

    public Child[] Children { get; private set; } 

    private Child1 { get { return Child[0]; } set { Child[0] = value; } } 
    private Child2 { get { return Child[1]; } set { Child[1] = value; } } 
    private Child3 { get { return Child[2]; } set { Child[2] = value; } } 
} 

La carte facilement comme des propriétés distinctes.

<property name="Child1" /> 
<property name="Child2" /> 
<property name="Child3" /> 

Probablement la meilleure solution est de la carte juste à une autre table.

<array table="Children"> 
    <key name="Parent_FK"/> 
    <index name="array_index"/> 
    <composite-element> 
    <property name="Foo"/> 
    <property name="Bar"/> 
    </composite-element> 
</array> 
+0

ce serait bien si j'avais seulement 3 enfants .. mais il y a 10 et chaque élément enfant contient 5 champs .. Y a-t-il une autre solution? – npeBeg

+0

Vous devez toujours spécifier toutes les colonnes que vous avez dans la base de données dans votre fichier de mappage S'il y a 10 fois les mêmes 5 champs Si vous voulez éviter cela, évitez ces 50 colonnes et faites le mappage de toutes les données dans une autre table. –

Questions connexes