次の問題があります 私はユーザーがいます。ユーザーにはデータベースの列があります - チケット。 - チケットは社内通貨です。 ユーザーがウェブサイトをクリックしたとき - webapi ===> BL(クラスライブラリ)マルチリクエストからの保護 - WebAPI
私はチケットを持っていますか? DALに - そしてこのカウンターを下に置く)。
問題は - 私がボタンを押してウェブサイトをクリックすると - とても速く - 私は2回買うことができます。
例
ユーザーは1枚のチケット
彼は何かを購入したい持っている - 価格1枚のチケット
ユーザーがボタンの上に高速の2回をクリックし
1要求 を買いますWebApiに行く==> BLに行く==> BlはDALユーザーからDBから取ってきてチケットがあるかどうかチェックする---はいHE HAS ===>ロジックとpを行う0
2要求WEBAPIに 移動にUTチケットカウンター==> BLに行く==> B1をDBからDALユーザーから取得し、チェック、彼はチケットを持っている場合--- YES HEはここを持っている問題であり、 ===>ロジックを実行してチケットカウンターを0にする
このバグからどのように保護されているかわかりません。
ORMにstraight ado.netを使用しているのかEntity Framework(または何か他のもの)を使用していますか?私が尋ねる理由は、Sql Serverにバージョニング行を使用するオプションがあり、EFがこれを利用して並行性チェックを提供できるということです。あなたがado.netを使用している場合でも、これを利用することはできますが、手動で実装する必要があります。 – Igor
EF 6.0を使用しているIm – Alex
複数のボタンイベントを処理できない場合は、最初のクリック後にボタンを無効にすることができます。 –