1.起源
例外:ストア更新、挿入、または削除文が行(0)の予想外の数に影響を与えました
あなたが赤の上にこれらを満たしたとき、あなたはEFの並行性の問題が発生したことを示しています。
同時に動作する2つの接続は、例えば、接続変更の接続を削除するように、紛争のデータベースに加えられたときに削除が変化する前に発生すると、例外が存在するであろう。
別の状況がありDataContextの中に新しいオブジェクトを作成することですが、編集者からの修正としての彼のステータスが追加されます
使用(VARのコンテキスト= 新しいエンティティ・コンテキスト()) { VARの顧客= 新しい顧客()。 // ...コード... context.Entry(顧客).State = EntityState.Modified。 context.SaveChanges(); }
2.対策
問題に共通の解決策、2つの同時実行があり、
まず、これは時に異常が発生した場合、データベースの埋め戻しの状態エンティティ
使用して(VARのコンテキスト= 新しいエンティティ・コンテキスト()) { // ...コードを... してみてください { context.SaveChangesを(); } キャッチ(DbUpdateConcurrencyExceptionのEX) { VARの値= ex.Entries.Single()。 value.OriginalValues.SetValues(value.GetDatabaseValues())。 context.SaveChanges(); } }
第二に、ローカルエンティティから修飾状態への添加しました
使用(VARのコンテキスト= 新しいCustomerContext()) { VARの顧客= 新しい顧客()。 // ...コード... context.Entry(顧客).State = EntityState.Added。 context.SaveChanges(); }