1

自家製のデータ アクセス フレームワークを使用する Web サービスがありますが、現在の状態では、Web サービスは一度に複数のインスタンスを実行できないことがわかりました。閉じている/すでに開いているなどのエラー。

そこで、すべてのリクエストをキューに入れる SQL ロック/ミューテックスを実装しました。それ以来、かなりスムーズに動作しています。

私は最近、ADO Entity Framework (それまで遊んだことはありませんでした) を使用する別のプロジェクトで働いていましたが、この自家製のフレームワークとほとんど同じことができることがわかりました。

私の質問は、ADO Entity Framework はそれ自体で十分に堅牢なので、この SQL ミューテックスの実装はもう必要ないのでしょうか?

ありがとう。

4

2 に答える 2

2

「スレッド間で ObjectContext (最初にコード内の DbContext) インスタンスを共有しない」という規則に従えば、すべて問題ありません。

エンティティ フレームワークはパフォーマンス (エンティティ モデル キャッシュ) を改善するためにいくつかの静的データを使用しますが、ほとんどのオブジェクト (エンティティ接続、コンテキスト、変更トラッカーなど) はスレッドセーフではなく、スレッド間で共有するべきではありません。

于 2012-06-05T11:44:43.103 に答える
1

はい、自作レイヤーが実行する必要があるスレッド間で dbcontexts を共有しないことを考えると、それを行うのに十分な堅牢性があります。私が行く道ではありませんでした。

于 2012-06-05T11:49:04.790 に答える