我正在使用Nhibernate创建多对多实现。目前我有以下课程。在这两个类中,我实现了AddObjX(Objx obj)
方法将项添加到集合中。
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 - &gt;之间的关联。 obj2的。因此,如果我检索obj2,则没有obj1耦合到它。当我检索obj1时,有一个obj2耦合到它。
当我这样做时
obj1.AddObj2(obj2);
obj2.AddObj1(obj1);
Session.SaveOrUpdate(obj1);
我在两个场景中都有对象。这是设计还是我错过了什么?
答案 0 :(得分:3)
您是否尝试从第二个HasManyToMany中删除Inverse
?
AFAIK你应该只有一个逆,因为这指示NH哪一方负责插入。