質問

Entity Framework(CF、C#)でSaveChanges / SaveChangesAsyncを呼び出すとき(たとえば、最後に読み取り済みの場合は値が更新されている場合)、次に、これら2つの例外DbUpdateConcurrencyExceptionまたはOptimisticConcurrencyExceptionのどちらをキャッチしますか。

とそれらの違いは何ですか?

役に立ちましたか?

解決

DbUpdateConcurrencyExceptionDbContextによってスローされた特定の例外であるため、これはキャッチするものです。この例外は、基礎となるOptimisticConcurrencyExceptionによって引き起こされる可能性がありますが、そうであれば、この例外は内部例外として折り返されます。

すべての更新例外が並行性によって引き起こされるわけではないので、DbUpdateException の後にDbUpdateConcurrencyException をキャッチしても(後者はDbUpdateExceptionのサブタイプ)。

関連項目 Entity Framework 5.0は、楽観的同時実行性の例外?

他のヒント

OptimisticConcurrencyExceptionを取得します。この

今折りたたみに来る。

  • optimisticconcurrencyException :楽観的同時実行性違反が発生したときにスローされます(複数のPeroも同じ結果に変更されているとします。また、これにより、
  • の問題が発生します)。
  • dbupdateConcurrencyException :DBContextによってスローされた例外の動作が、エンティティのSaveChangesがデータベースの更新になるが、実際にはデータベース内の行は影響を受けませんでした。これは、データベースが同時に更新され、実際に一致すると予想された並行性トークンが表示されていることを示しています。この例外によって参照される状態エントリは、シリアル化がNULLを返すとセキュリティと状態エントリへのアクセスのためにシリアル化されません。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top