我的代碼如下所示:(其中「用戶」是用戶配置實例被編輯後,通過從視圖背面)MVC4 EF5更改不會保存到數據庫
UserProfile original = DBContext.UserProfiles.Where(x => x.UserId == user.UserId).FirstOrDefault();
if (original != null)
{
original = user;
DAL.DAL.Instance.TGIMobiledb.SaveChanges();
}
此代碼火災沒有錯誤,但不更新數據庫。經過一番研究,看來我得打電話調用SaveChanges()
DBContext.Entry(original).State = EntityState.Modified;
但該行代碼導致此錯誤之前,添加以下行:
「具有相同鍵的對象已經存在於ObjectStateManager的ObjectStateManager無法使用相同的密鑰跟蹤多個對象。「
的更改保存到數據庫的罰款,如果我手動分配各個領域是這樣的:
original.UserId = user.UserId;
original.FirstName = user.FirstName;
original.Surname = user.Surname;
original.UserName = user.UserName;
顯然這是不太理想,尤其是與更大的實體。
這裏http://stackoverflow.com/questions/15336248/entity-framework-5-updating-a-record是一個很好的討論EF5更新實體的情況。 –