質問: 私は現在、ウォレットシステム、複数のユーザーバランスの更新を同時に行っています。しかし今、問題は、ユーザーの残高が別のトランザクションで発生したときに、残高が適切に更新できない場合です。エンティティフレームワークコアのデータベースでウォレットの残高列に楽観的同時実行を使用する場合。問題は解決したかどうか
回答: 楽観的ロック列の実装が同時バランス更新の問題を解決するかどうかについて質問していると思います。答えは「いいえ」で、同時バランス更新の問題を単独で解決するものではありません。楽観的なロック列の実装では、同時更新は発生しません。 楽観的ロックの実装*は* 、残高を同時に変更しようとする試みがあったことのみを通知し、最初の更新よりも後に発生する更新を停止します(同時変更の最初の変更のみが成功します)。 バランスを更新するには、 ここで説明されているように、並行性の競合を処理するコードを記述する必要があります 。基本的な考え方は、競合エラーを処理し、何をすべきかを決定することです。いくつかのオプションは、ユーザーに何をするかを尋ねるか、競合エラーを処理しながらコードによって何をすべきかを自動的に決定することです。