2010-12-16 100 views
3

我有以下表格:如何將複合主鍵映射到外國流利的nhibernate?

table A: 

FOO (PK) | CLIENT (PK) 

table B: 

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

PK - >主鍵

FK - >外鍵

有A和B 之間的一個一對多的關係,我可以」牛逼簡單的做到這些:

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); 
    } 
} 

它會失敗,出現以下異常:

外鍵(FKE7804EB3DA7EBD4B:B [FOO]))必須具有相同數目的被引用的主鍵(A [FOO,CLIENT])

是否有可能與功能NHibernate正確映射此列?

回答

6

找到了解決辦法:

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