2010-12-16 4 views
3

Je les tableaux suivants:Comment mapper la clé primaire composite sur un nhibernate courant?

table A: 

FOO (PK) | CLIENT (PK) 

table B: 

BAR (PK) | CLIENT (PK/FK) | FOO (FK) 

PK -> clé primaire

FK -> clé

étrangère Il y a un à plusieurs relation entre A et B. je peux » t faire simplement ceci:

class AMap 
{ 
    public AMap() 
    { 
     CompositeId().KeyReference(a => a.FOO) 
        .KeyReference(a => a.CLIENT); 
     HasMany(a => a.B); 
    } 
} 


class BMap 
{ 
    public BMap() 
    { 
     CompositeId().KeyReference(a => a.BAR) 
        .KeyReference(a => a.CLIENT); 
     References(a => a.A); 
    } 
} 

Il échouera à l'exception suivante:

Clé étrangère (FKE7804EB3DA7EBD4B: B [FOO])) doit avoir le même nombre de colonnes que la clé primaire référencée (A [FOO, CLIENT])

Est-il possible de cartographier cette correctement avec Fluent NHibernate ?

Répondre

6

trouvé la solution:

HasMany(a => a.B).KeyColumns.Add("FOO", "CLIENT").Cascade.All(); 
Questions connexes