エンティティフレームワークの並行性の例外
-
21-12-2019 - |
質問
Entity Framework(CF、C#)でSaveChanges
/ SaveChangesAsync
を呼び出すとき(たとえば、最後に読み取り済みの場合は値が更新されている場合)、次に、これら2つの例外DbUpdateConcurrencyException
またはOptimisticConcurrencyException
のどちらをキャッチしますか。
とそれらの違いは何ですか?
解決
DbUpdateConcurrencyException
はDbContext
によってスローされた特定の例外であるため、これはキャッチするものです。この例外は、基礎となるOptimisticConcurrencyException
によって引き起こされる可能性がありますが、そうであれば、この例外は内部例外として折り返されます。
すべての更新例外が並行性によって引き起こされるわけではないので、DbUpdateException
の後にDbUpdateConcurrencyException
をキャッチしても(後者はDbUpdateException
のサブタイプ)。
他のヒント
OptimisticConcurrencyException
を取得します。この。
今折りたたみに来る。
- optimisticconcurrencyException :楽観的同時実行性違反が発生したときにスローされます(複数のPeroも同じ結果に変更されているとします。また、これにより、 の問題が発生します)。
- dbupdateConcurrencyException :DBContextによってスローされた例外の動作が、エンティティのSaveChangesがデータベースの更新になるが、実際にはデータベース内の行は影響を受けませんでした。これは、データベースが同時に更新され、実際に一致すると予想された並行性トークンが表示されていることを示しています。この例外によって参照される状態エントリは、シリアル化がNULLを返すとセキュリティと状態エントリへのアクセスのためにシリアル化されません。
所属していません StackOverflow