2017-04-26 88 views
0

我遇到了多對多關係的問題。實體框架中的多對多關係

我有3個模型類:

  1. 文章 - >>>項目
  2. 關鍵字 - >>>關鍵詞
  3. 文章和關鍵詞之間TableForRelation - >>> ItemKeywords

使用實體框架核心,我寫這3個類,他們工作正常

public class Item 
{ 
     public int Id { get; set; } 
     public string Content { get; set; } 

     public virtual ICollection<ItemKeyWords> ItemKeyWords { get; set; } 
} 

public class KeyWord 
{ 
     public int Id { get; set } 
     public string Text { get; set; } 

     public virtual ICollection<ItemKeyWords> ItemKeyWords { get; set; } 
} 

public class ItemKeyWords 
{ 
     public int Id { get; set; } 

     public int ItemId { get; set; } 
     public virtual Item Item { get; set; } 

     public int KeyWordId { get; set; } 
     public virtual KeyWord KeyWord { get; set; } 
} 

問題是:我怎麼能告訴實體框架,如果Keyword存在不把它放在關鍵字表中,只是創建一個與ItemKeywords表中的關係。

database uml

回答

0

前添加KeyWordItem.ItemKeyWords,你必須嘗試從context.Set<KeyWord>()加載它。

如果加載結果爲空,則按實際情況進行操作。

如果加載!= null,則添加加載的值。

+0

我做到了這一點,併爲我工作.thx,有沒有更好的方式存在? – soroushdes

+0

如果您知道關鍵字的ID,則可以使用它來構造KeyWord實體並將其附加到上下文。然後,您使用附加的實體將關鍵字添加到該項目。這樣做可以避免對數據庫的攻擊。 – tschmit007

+0

是的,我做到了,再次thx bro <3 – soroushdes