结构:TypeA 有 TypeB 的集合,TypeB 有 TypeC 的集合。
TypeB 和 TypeC 是多态的。
TypeA 映射
HasMany<TypeB>(t => t.TypeBList).CascadeAll().Inverse()..
B型映射
HasManyToMany<TypeC>(t => t.TypeCList).Casecade.All().Inverse()..
TypeC 映射
HasManyToMany<TypeB>(t => t.TypeBList).Casecade.None()...
TypeB 有一个方法
Add(TypeC typec) { typec.TypeBList.Add(this); TypeBList.Add(typec); }
我需要向 typeb 集合添加一个新的 typec,但我想通过调用 repo.Save(typeA) 来保存,但我遇到了共享集合问题,因为 TypeB 在 TypeA 和 TypeC 中都存在。
var typec = new TypeC { TypeBList = typea.TypeBList, .... }
typea.TypeBList[0].Add(typec);
repo.save(typea);
这不会通过保存 typea 来工作,我是否被迫获得 typeb 并在那里进行更改?