Nhibernate多对多添加双方

时间:2013-04-13 09:31:35

标签: nhibernate fluent-nhibernate nhibernate-mapping

我正在使用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);

我在两个场景中都有对象。这是设计还是我错过了什么?

1 个答案:

答案 0 :(得分:3)

您是否尝试从第二个HasManyToMany中删除Inverse

AFAIK你应该只有一个逆,因为这指示NH哪一方负责插入。

请见post by northerdevfollow up post