を保存するとき、私は新しい名前を取得他の誰かに自分の犬を販売し、所有者と犬をシミュレートするために、次のコードを持っている:Entity Frameworkのには一貫性のないオブジェクト状態エラーに
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
私は知っているが、良いことは、私はあなたに本当に迅速な修正を与えて、それは実際にあなたのために働いたことを幸せよりも..私は別のOPを取得しようと2時間を過ごした彼は私の提案ちょうど戻って、私が尋ねたことをして、それが働いた..LOLうれしい私は助けることができる – MethodMan