5

いくつかのEntityFrameworkアプリケーションのプロファイリングにEFProfiler(絶対に素晴らしいツールBTW!)を使用した後、ほとんどの場合、すべてのオブジェクトコンテキストが閉じられていないようです。

たとえば、ローカルで実行した後、EF Profilerは、326個のオブジェクトコンテキストが開かれているのに、1つだけが閉じられていると教えてくれました。

だから私の質問は、これについて心配する必要がありますか?それとも、Entity Framework内に自己完結型ですか?

4

3 に答える 3

4

IoCコンテナを使用していない場合でも、たとえばGlobal.asaxのEnd Requestで、各リクエストの後にObjectContextsを手動で閉じることができます。これにより、コンテキストの「リクエストごと」のライフスタイルをシミュレートできますか?

于 2012-10-04T14:37:01.160 に答える
2

ObjectContextは、アプリケーションが明示的に保持していない場合、最終的に破棄されますが、一般に、ObjectContextを使い終わったら、できるだけ早く決定論的に破棄するようにしてください。ほとんどの場合、それらは破棄されるまでデータベース接続を保持します。私の現在のWebアプリケーションでは、IoCコンテナー(Autofac)を使用して、要求中に開かれたObjectContextが要求の最後に破棄され、ガベージコレクションを待つ必要がないことを確認します。

于 2012-10-04T14:30:44.477 に答える
2

オブジェクトコンテキストはかなり「かさばる」ので、心配して問題を修正することをお勧めします。それらの数が多すぎると、アプリケーションは最終的に必要以上のメモリを使用することになり、IISはアプリケーションをより頻繁に再起動します...

于 2012-10-04T14:32:05.097 に答える