Users / \ / \ M-T-O M-T-O / \ / \ Products----M-T-M----Tags
我想知道是否有任何文檔介紹如何使用實體創建類似這樣的模式。我被困在想知道哪個實體應該對關係中的內容負責。對象/實體:多對多+多對一
例如:
假設我想爲產品添加標籤。我在我的
產品實體像這樣的方法:
public virtual void AddTag(Tag tag)
{
this.Tags.Add(tag); // IList<Tag> Tags
tag.AddProduct(this);
}
首先這增加了一個標籤對象的標籤列表。然後,該標籤對象將「這個」產品添加到它自己的產品列表中。
到目前爲止這麼好。
但是,如果我想要將產品添加到標籤,該怎麼辦。我在我的
標籤實體像這樣的方法:
public virtual void AddProduct(Product product)
{
this.Products.Add(product); // IList<Product> Products
// product.AddTag(this);
}
首先,我的產品對象添加到產品列表中我的標籤對象。然後,我可以將「this」標籤添加到產品中,但這是我卡住的地方。被評論的方法會拋出一個stackoverflow錯誤,因爲它會調用AddProduct來調用AddTag,等等。
不確定我的模式是否真的正確。從用戶到標籤的M-T-O可以讓我們輕鬆查看用戶擁有的標籤。
所以我想知道是否有人能指引我進入正確的方向?
由於提前,
Pickels
我認爲他們低估了你,因爲我談論的是實體而不是任何數據庫模式。在我的數據庫中,我將有一個ProductsTags表。 – Pickels 2010-01-29 16:11:52
問題是如何建模域模型中的多對多關係,而不是數據庫中。 – 2010-01-29 16:13:04