我正在使用 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 -> obj2 之间的关联。因此,如果我检索 obj2,则没有与之耦合的 obj1。当我检索 obj1 时,有一个 obj2 与之耦合。
当我做
obj1.AddObj2(obj2);
obj2.AddObj1(obj1);
Session.SaveOrUpdate(obj1);
我在这两种情况下都有对象。这是设计的还是我错过了什么?