本週我試圖與EF握手,但我現在確定,但我剛剛打了我的第一個主要障礙。我有一個項目表和一個類別表。每個項目都可以用多種類別「標記」,因此我創建了一個鏈接表。兩列,一個是項目的主要ID,另一個是類別的主要ID。我手動添加了一些數據到數據庫,我可以在我的代碼中通過EF查詢它。添加和刪除關聯 - 實體框架
現在我想'標記'一個新的項目與其中一個現有的類別。我有要添加的類別ID和該項目的ID。我使用linq加載兩個實體,然後嘗試以下操作。
int categoryToAddId = Convert.ToInt32(ddlCategoriesRemaining.SelectedValue);
var categoryToAdd = db.CollectionCategorySet.First(x => x.ID == categoryToAddId);
currentCollectionItem.Categories.Add(categoryToAdd);
db.SaveChanges();
,但我得到「無法更新EntitySet的‘collectionItemCategories’,因爲它有一個DefiningQuery並沒有元素來支持當前操作的元素存在。」
我錯過了什麼嗎?這不是正確的做法嗎?我嘗試去除同樣的東西,也沒有運氣。
感謝您的幫助,但我很確定只是看着這不會起作用。您試圖將項目類別(類別對象列表)設置爲類別(單個類別對象)。很明顯,這種不匹配是行不通的。 簡而言之,我想我的問題是,如何添加和刪除參考表數據,其中Categories是我的參考表。 – 2009-06-08 13:14:56
我根據CategoryID將oCategory設置爲Category中的第一條記錄。然後,您可以將Categories屬性設置爲單個Category對象。我相信你也可以用下面的代碼替換那行代碼: oItem.Categories.CategoryID = oCategory.CategoryID; – 2009-06-08 17:12:15