1

我不確定自己的文字是否正確(這可能是我努力尋找結果的原因)。EF代碼優先的對稱關係

這裏就是我想要實現:

我希望能夠可以添加相關產品(產品B,產品C)產品A的集合,我想它因此,當您查看產品B時,相關產品會反映A上添加的內容(如您在產品A和產品C中看到的一樣)。 是否必須爲「相關」關係提供單獨的表格?我猜測有一個簡單的方法來做到這一點。

public class Product 
{ 
    public int ProductId { get; set; } 
    public string DefinitionUri { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 

    public virtual ICollection<Product> RelatedProducts { get; set; } 
} 
+0

這不就是一個類似'ProductGroup'的產品分組嗎? (所以,一個獨立的實體) – 2013-02-21 09:25:09

+0

我並沒有真的想創建一個產品組來放置產品。我希望管理員和算法能夠關聯產品(對稱)並能夠簡單訪問它們(如我可以訪問RelatedProducts屬性)並且高效(不需要在每次訪問屬性時根據其他屬性「查找」相關產品)。 – 2013-07-28 23:31:51

回答

0

我猜你正在嘗試做的是類似於你看到在amazon.com上什麼情況下,如果打開一本書,它會給你相關的書籍來看看。如果我正確猜測,那麼這是一個多對多的關係,因爲每個產品都可能與許多其他產品相關,所以現在Entity Framework Code First通過約定支持多對多關係,並創建一個連接表自動。現在我還沒有嘗試過兩個相關的對象都是同一類型的(在你的例子中是「Product」),所以你將不得不檢查這個結果是否成立。另一方面,我不認爲這是應該實現這個功能的方式,我認爲你必須使用某種數據挖掘技術,我會爲Google做些什麼,看看專業人員如何實現這一功能。

+0

創建一個連接表並有一個不對稱的「相關產品」關係很容易,但我希望它是對稱的(我的第二段對此有所瞭解)。我將研究數據挖掘技術 - 但這聽起來有點可怕,因爲我正在研究什麼是相對較小的特徵。雖然謝謝! – 2013-07-28 23:35:20

+0

@NickDarvey你能找到你需要的答案嗎?我有同樣的問題,但無法找到它。由Gert Arnold提供的解決方案恰恰是「不對稱」的情況,對吧? – tyron 2014-12-17 16:19:51

+0

@tyron我還沒有看過這個,所以沒有我沒有找到解決方案,我現在有點遠離實體框架,對不起。 – 2014-12-17 16:25:05

0

您可以像定義它一樣使用屬性,但應該告訴EF它是多對多關聯,例如,像這樣:

entry.HasMany(p => p.RelatedProducts) 
    .WithMany() 
    .Map(m => m.MapLeftKey("ProductId") 
       .MapRightKey("ProductIdReleated")); 

現在Ef中會創建兩個FKS到Product結合表。如果沒有這個映射,它將創建一個表,其中FK對應自己,即1-n關聯。