實體框架EntityKey /外鍵問題

entity entity-framework entitykey foreign-keys

作為表格的結果,我正在嘗試保存新的品牌記錄。在我看來,Gender是一個下拉列表,返回一個Integer,它是從ViewData填充的(“性別”)

我按如下方式設置了我的鏈接:

gID = CInt(Request.Form("Gender"))
Brand.GenderReference.EntityKey = New EntityKey("DB_ENTITIES.Gender", "Id", gID)
TryUpdateModel(Brand)
DB.SaveChanges()

這導致以下錯誤。

Entities in 'DB_ENTITIES.Brand' participate in the 'FK_Brand_Gender' relationship. 0 related 'Gender' were found. 1 'Gender' is expected.

有人可以用簡單的英語向我解釋參數。我也嘗試過DB.Gender作為第一個參數,但沒有快樂。

一般承認的答案

而不是創建一個EntityKey創建一個存根性別對象(抱歉,我不是一個VB人,所以在C#中):

Gender g = new Gender{ID = Int32.Parse(Request.Form("Gender"))};

然後將Gender附加到相應的EntitySet (您從中獲取性別實體的DB上的屬性名稱是下面的字符串):

DB.AttachTo("Genders",g);

這使得數據庫處於未在數據庫查詢的情況下處於未更改狀態的ObjectContext中的Gender狀態。現在您可以按照正常情況建立關係

brand.Gender = g;
DB.AddToBrand(brand);
DB.SaveChanges();

這就是它的全部。無需使用EntityKeys

希望這可以幫助

亞歷克斯


熱門答案

您需要的是品牌和性別的實例,然後將Brand.Gender設置為Gender的實例。然後你可以毫無問題地保存。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因