Users
/ \
/ \
M-T-O M-T-O
/ \
/ \
Products----M-T-M----Tags
我想知道是否有关于如何用实体创建这样的模式的文档。我一直想知道哪一个实体应该对关系中的什么负责。
例如:
假设我想给产品添加一个标签。我有这样的方法
产品实体:
public virtual void AddTag(Tag tag)
{
this.Tags.Add(tag); // IList Tags
tag.AddProduct(this);
}
首先,这会将标记对象添加到标记列表中。然后,这个标记对象将“this”产品添加到它自己的产品列表中。
到现在为止,一直都还不错。
但是如果我想在标签上添加一个产品呢?我有这样的方法
标签实体:
public virtual void AddProduct(Product product)
{
this.Products.Add(product); // IList Products
// product.AddTag(this);
}
因此,首先我将product对象添加到我的tag对象中的产品列表中。然后我可以在产品上添加“this”标签,但这就是我被卡住的地方。被注释的方法会引发stackOverflow错误,因为它会回调调用addtag等的addProduct。
也不确定我的模式是否真的正确。从用户到标签的M-T-O是为了方便我查看用户拥有什么标签。
所以我想知道是否有人能为我指明正确的方向?
事先谢谢,
皮克尔斯