5.同時

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(); 
}

 

おすすめ

転載: www.cnblogs.com/nocanstillbb/p/11494708.html