私は、お金の取引をしている状況で働いています。
たとえば、ユーザーのウォレットのテーブルがあり、その行に残高があります。
UserId; Wallet Id; Balance
現在、私たちの Web サイトと Web サービスでは、特定のトランザクションが発生するたびに、次のことを行う必要があります。
- そのトランザクションを実行するのに十分な資金があることを確認します。
- 残高からトランザクションのコストを差し引きます。
トランザクションの全期間にわたってその行/エンティティをロックする正しい方法と方法は何ですか?
私が読んだことから、EFがエンティティをマークし、それをDBに保存するときにそのマークを比較するソリューションがいくつかありますが、別のユーザー/プログラムがすでに金額を編集した場合はどうなりますか?
EFでこれを達成できますか? そうでない場合、他にどのようなオプションがありますか?
ストアド プロシージャを呼び出すと、プログラム A がロックしている間、他の誰も SQL Server のその行にアクセスできないように、行を適切にロックできますか?