下面是一個簡單的例子。使用實體框架代碼優先,如何插入具有現有屬性的對象
我有這樣定義的Customer
記錄:
public class Customer
{
[Key]
public string Id { get;}
public UsState UsState { get; set; }
}
public class UsState
{
[Key]
public string StateAbbreviation {get;set;}
public string StateName {get;set;}
}
我已經有我UsState的人口與50個州,現在我要插入栓到現有狀態的一個Customer
記錄。
如果我這樣說:
Customer customer = new Customer()
{
UsState = "CA",
Id = 1001
}
dbContext.Customers.add(customer);
我得到一個錯誤說國家正試圖重新插入。
如何獲得添加使用現有狀態,而不是嘗試並重新插入它。我真正的問題有很多可能存在的嵌套對象,所以我需要通常解決這個問題。
感謝
您好Joakim,我不是想要密集,但我只是沒有從文章中得到我需要做什麼,我需要什麼。我從頭開始插入UsState存在的記錄,但記錄的其餘部分不記錄。也就是說,我有dbContext.Customers.add(客戶)。我不明白如何附加或分離客戶。 (顯然)我不是EF精靈。我也無法弄清楚如何做你的#1建議。我嘗試去做db.UsStates.where(...)。firstordefault()並將它分配給Customer.UsState,但是沒有奏效(關於重複插入的相同錯誤) – 2012-01-15 02:00:15
實際上Joakim,你的#1確實工作。我很困惑,因爲我測試的第一條記錄實際上並不存在於UsState表中。我對#2感興趣,這聽起來像是一個更一般的解決方案。如果你能幫我解釋一下,我會很感激。我沒有得到這個帖子。 - 謝謝 – 2012-01-15 02:05:26
@PeterKellner我的第二個意思是,你使用某種ID從數據庫中獲取UsState,並將該實體添加到客戶。在#1中,我們承擔責任並告訴EF即使它不存在也是存在的。 – Joakim 2012-01-15 04:18:06