は、私は、彼らがこのようなデータアクセス層を持っているコードを見て数十万人の同時ユーザーがいるようなFacebookのようなアプリケーションの場合は、以前のユーザーがデータベースを終了するまで各ユーザーの作業をブロックしますか?Updateメソッドの場合は、データベースのロック時にスレッドをロックすると便利ですエンジンはすでにデータベースサーバーレベルで並行性を管理していますか? "純C#のロック文は
次に、ロックをGetCustomersメソッドとUpdateCustomerメソッドに移動することについて考え始めましたが、もう一度考えてみてください。「まったく役に立ちますか?」 1月3日に
編集:
あなたはすべての権利だ、私は「でGetInstance」方式で「静的」キーワードを逃しました。
Antoher thing:同じデータアクセスクラスで別のスレッドが動作していた場合、スレッドは_mutex変数にアクセスできないと考えました。つまり、_mutex変数がlockステートメントの内部から返されているため、スレッドは_mutexにアクセスすることができませんでした。次の文に達した。
return CustomerDA.GetInstance().GetCustomer();
いくつかのトレースを行った後、私は私が間違った仮定を作っていた実現します。間違った前提をしていることを確認してください。
So ...データアクセスレイヤーに(INSERT、UPDATE、DELETEの場合でも)ロックステートメントが不要で、DataAccessのメソッドが静的メソッドかインスタンスメソッドかどうかは関係ありませんか?
おかげで再び...あなたのコメントは、そのコードでロックが完全に無意味です
このコードを見た場合は、どこにも戻ってこないでください。これは単に悪いコードです。それを無視します。 –
私はこのコードを書いた人は、CustomerDAのシングルトンを持つことを意図していたと思います。 _mutexは読み取り専用であるため、GetInstance()のロックは実際には必要ありません。 GetCustomer()およびUpdateCustomer()でロックが存在しないため、SQL文を実行しているときにブロックされません。 –