この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3308|答える: 0

[出典] EFの並行性例外 DbUpdateConcurrencyExceptionはキャッシュされた値を再問い合わせします

[リンクをコピー]
掲載地 2023/11/01 20:30:43 | | | |
要件:EFの楽観ロックを使って並行処理を制御し、並行性が発生した場合は再試行メカニズムを追加し、再試行後に再問い合わせされるデータがEFキャッシュデータであることを確認し、例外が常に保存されることを意味します。

データベース操作は1行に影響を与えると予想されていましたが、実際には0行に影響を与えました。 エンティティが読み込まれた時点で、データが変更または削除されている可能性があります。 見るハイパーリンクのログインが見えます。楽観的並行例外の理解と処理に関する情報。

この議論はEF 6.xとEF Coreクエリキャッシュに関する考えにつながりました。ハイパーリンクのログインが見えます。

同時タイムスタンプと並行チェックの区別の扱い
https://www.itsvse.com/thread-3616-1-1.html

以下に示すように:



SQLスクリプト:

ASP.NET Core 6 バックエンドコード:

コントローラーコード:



選択肢1(推奨)

使うEntityState.Detachedエンティティ状態をコンテキストで追跡していないとマークし、以下のように修正します:

以下に示すように:



選択肢2

Reload()メソッドを呼び出してエンティティオブジェクトを更新します。コードは以下の通りです:

リロードはEFキャッシュの値をリフレッシュすることもできますが、これにより、SQLクエリが複数回実行されることになりますしたがって、推奨されません。

他の2つの方法、AsNoTrackingは適していませんし、もう1つはテストされていません。

(終わり)




先の:.NETはデータベースのvarbinary文字列をバイト[]配列に変換します
次に:実行コマンドを起動するためのOpenWRT設定
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com