2013-04-13 60 views
1

我用Nhibernate創建了多對多的實現。目前我有下面的課程。在這兩個課程中,我實施了AddObjX(Objx obj)方法將項目添加到集合中。Nhibernate多對多添加到兩邊

Obj1 
{ 
    int id; 
    Ilist<Obj2> obj2; 
} 

Obj2 
{ 
    int id; 
    Ilist<Obj1> obj1; 
} 

在映射我有

HasManyToMany(x => x.Obj1) 
    .Table("Obj1Obj2") 
    .ParentKeyColumn("Obj1Id") 
    .ChildKeyColumn("Obj2Id") 
    .Inverse() 
    .Cascade 
    .SaveUpdate(); 

HasManyToMany(x => x.Obj2) 
    .Table("Obj1Obj2") 
    .ParentKeyColumn("Obj2Id") 
    .ChildKeyColumn("Obj1Id") 
    .Inverse() 
    .Cascade 
    .SaveUpdate(); 

當我說現在

obj1.AddObj2(obj2); 
Session.SaveOrUpdate(obj1); 

我只得到OBJ1之間的關聯 - > obj2的。所以如果我檢索obj2,沒有obj1耦合到它。當我檢索obj1時,會有一個obj2與之結合。

當我做

obj1.AddObj2(obj2); 
obj2.AddObj1(obj1); 
Session.SaveOrUpdate(obj1); 

我必須在這兩個場景中的對象。這是設計還是我錯過了什麼?

回答

3

您是否試過從第二個HasManyToMany中刪除Inverse

AFAIK你應該只有一個反向,因爲這指示NH映射的哪一側負責插入。

看到這個post by northerdev也是這個follow up post