0
私はasp.net mvc 3 Webアプリケーションを開発中です。 私のアプリケーションでは、私のサーバーにコールを送信するjavascriptクライアントがあります。asp.net mvc - 競合状態:同じパラメータを持つメソッドをロックする
- は、オブジェクトの新しいインスタンスを作成します -
- が
- は、リモートWebサーバー呼び出し、それをデータベースに保存します:通話の 一つは順番にすることを、私の方法に向けられています。
オブジェクトを本当に存在するかどうかを調べるためにデータベースを照会して終了するかどうかを決定します(終了する場合は終了します)。
私の問題は、2つの呼び出しがちょうど1つずつ行われると、オブジェクトがデータベースに保存される機会がなくなり、両方のスレッドが処理を続ける必要があると考えられるということです。
私が望むのは、同じパラメータで呼び出されたスレッドのみのメソッドをロックすることです。メソッド全体またはその一部にロックを使用することは、パフォーマンスに重大な問題を引き起こすため、使用できません。
どうすればいいですか?
データベースレベルで確認してください。そのうちの1人がセーブすると、何らかの制約に違反するため、もう1人は失敗します。 – clyc
これを行うには良い方法はありませんか? – vondip
ハッシュテーブルを作成して、オブジェクトがすでに存在するかどうかを確認することができます – clyc