我有下面的代碼來模擬一個老闆他的狗賣給別人,狗得到一個新的名字:不一致的對象狀態錯誤在實體框架時保存
public void ChangeOwner(int oldOwnerID, int newOwnerID, int dogID, string newDogName)
{
var oldOwner = _objectContext.People.FirstOrDefault(x => x.ID == oldOwnerID);
oldOwner.DogID = null;
var newOwner = _objectContext.People.FirstOrDefault(x => x.ID == newOwnerID);
newOwner.DogID = dogID;
var dog = _objectContext.Dogs.FirstOrDefault(x => x.ID == dogID);
dog.Name = newDogName;
_objectContext.SaveChanges();
}
該代碼會拋出以下錯誤:
其他信息:對數據庫的更改被成功提交,但在更新對象上下文時發生錯誤。 ObjectContext可能處於不一致的狀態。內部異常消息:由於對象的鍵值與ObjectStateManager中的另一個對象衝突,因此AcceptChanges無法繼續。在調用AcceptChanges之前確保鍵值是唯一的。
爲什麼這個錯誤發生的歷史,我能做些什麼來解決這個問題?
我必須設置爲我的EDMX文件的身份我所有的主鍵,所以我刪除的問題,實體和補充回來,現在它的工作。謝謝你的幫助!這是讓它工作的最奇怪的方式! – Halcyon 2012-02-14 18:44:12
我知道,但好處是,我給你一個非常快速解決,我很高興,它實際上爲你工作多..我花了2小時試圖獲得另一OP不拿東西的時候,忽然在我的建議打我只是回去做我的問題,它的工作..大聲笑我很高興我可以幫忙 – MethodMan 2012-02-14 18:46:35