【发布时间】:2008-11-22 18:39:57
【问题描述】:
我有两个实体 Foo 和 Bar,它们之间存在多对多关系。
假设对于为什么 Foo 可能对多对多关系“负责”没有语义论据,但我们任意决定 Foo 负责该关系(即,在 NHibernate 中,我们将 Bar 标记为 Inverse)
从数据库的角度来看,这一切都很好,但我的实体 API 揭示了一个问题。
// Responsible for the relation
public class Foo
{
List<Bar> Bars = new List<Bar>();
public void AddBar(Bar bar)
{
Bars.Add(bar);
bar.AddFoo(this);
}
}
public class Bar
{
List<Foo> Foos = new List<Foo>();
// This shouldn't exist.
public void AddFoo(Foo foo)
{
Foos.Add(foo);
foo.AddBar(this); // Inf Recursion
}
}
如果我们确定 Foo 负责这种关系,我如何在不创建甚至不应该存在的公共 Bar.AddFoo() 方法的情况下更新 Bar 中的关联集合?
我觉得我应该能够保持我的域模型的完整性,而不必在这样的操作之后从数据库中重新加载这些实体。
更新:受评论者启发的代码调整。
【问题讨论】:
标签: nhibernate api many-to-many entity entity-relationship