5

これらのテーマについては個別に多くの質問があり、誰もが独自の意見を持っています. 多分誰かが私に次の問題に関して良い答えを与えることができます.

DB へのアクセスに EntityFramework を使用する Asp.NET MVC Web サービスがあります。単一のコントローラーがあり、ユーザーが Web サービスに要求を行うたびにそのインスタンスが作成されます。すべてのリクエストは高速です。DBからデータを取得し、変更してから保存するだけです。

もちろん、問題はDbContext を維持する方法です (スレッドセーフではないため) ? コントローラーの ctor で、DbContext のインスタンスを作成します。コントローラーの Dispose() で、DbContext を破棄します。

いくつかの投稿で、リクエストごとにインスタンスを作成するのは良い習慣ではないことを見てきました。ではない?

ありがとう、エディ。

4

2 に答える 2

4

DbContext は、リクエストごとにインスタンス化されるように設計されています。IDisposable を実装し、インスタンス化は低コストの操作です。データベースへの接続プーリングは内部で処理されます。

詳しくは:

Entity Framework と接続プーリング

于 2012-12-13T20:55:47.867 に答える
2

DbContext は非常に軽量なオブジェクトであり、操作 (= 要求) ごとに作成されてから破棄されるように設計されています。内部では、ado.net が接続プールからの db 接続の再利用を処理します。

于 2012-12-13T20:55:25.430 に答える