2009-11-13 56 views
0

我正在使用實體框架與SQL Server。我有兩個表之間的多對多關係。我已經創建了一個只有2個表的主鍵字段的連接表。在設計器中,2個表現在具有另一個導航屬性,返回類型爲Collection of X,其中X是另一個實體。到目前爲止,所有事情都應該如此。該設置看起來正確。如何創建和更新與EF的多對多關係

Task   TaskProducts  Product 
==========  ============  ======= 
TaskID   TaskID   ProductID 
Description ProductID  Name 

並不是每個任務都會有一個產品或產品與之相關聯。當該任務沒有關聯產品時,我將什麼分配給任務表的產品導航屬性?

當我確實擁有產品實體時,是否會使用產品實體構建一個EntityCollection集合,並將其分配給Task實體上的Products導航屬性?

在對Task實體的Products導航屬性進行更新(添加,刪除和更改)時,是否像處理其他集合一樣使用它?有什麼特別的事情要注意嗎?

我會對在Entity Framework中處理多對多關係的任何幫助感興趣。

編輯(11/17/2009)
有一件事我學到的是一個多對多的關係工作,連接表,連接表中的兩個字段需要被標記作爲主鍵;

回答

0

MSDN對實體框架管理許多一對多的關係,良好的文檔:

http://msdn.microsoft.com/en-us/library/bb738695.aspx

爲嵌入式說明性指導是調用實體集的「添加」方法,並指定(與在一對多關係的實體引用上設置Value屬性相比)。

更新的處理方式與任何其他EF更新一樣處理...加載所需的對象,設置更改的屬性並調用SaveChanges在上下文中。

刪除的處理方式與上下文相同,在上下文中調用DeleteObject,然後調用SaveChanges。

+0

雖然這個鏈接的文檔沒有專門處理多對多的關係,但是他們被提及並且信息是有用的。如何使用集合並且不關心管理連接表真的很不錯。 – DaveB 2009-11-17 17:32:11