MVCは自動的にコントローラまたは他の場所でインスタンス化するデータベースコンテキストを破棄しますか?MVC3はデータベースオブジェクトの現在のインスタンスを自動的に破棄しますか?
私は使用する必要がありますか、それとも心配する必要はありませんか?
MVCは自動的にコントローラまたは他の場所でインスタンス化するデータベースコンテキストを破棄しますか?MVC3はデータベースオブジェクトの現在のインスタンスを自動的に破棄しますか?
私は使用する必要がありますか、それとも心配する必要はありませんか?
IDisposable
と定義されているオブジェクトを初期化するときは、作成をusing
ステートメントでラップする必要があります。これは、処分を確実に行うための一般的な規則です。
これには、データコンテキストが含まれます。そうしないと、コントローラがデータコンテキストを使用している間にスローすると、結局オープンな接続になる可能性があります。
あなたがEFデータコンテキストについて話しているなら、答えはいいえ、ASP.NET MVCは自動的に処理しませんが、shouldn't be worriedはStephen Waltherがブログ記事で説明したように処理することについて処理します。ここにはsimilar answerがあります。
この議論はどうですか? 「私はIDisposableなものは明示的に破棄すべきだと主張するだろう。クラスをブラックボックスとして扱い、将来のリリースで変更される可能性のある内部実装については仮定しないでください。 – devuxer
これは危険なアドバイスだと思います。原則として、あるタイプが 'IDisposable'を実装している場合、' Dispose'(または 'using'を使用する)を呼び出す必要があると言います。クラスの「公開されている表面」の意図は、あなたが 'Dispose'を呼び出すべきだということです。これがなぜ適用されないのか(なぜなら、あなたがそれを逆コンパイルした、またはチームの開発者の一人に話したため)特権のある情報を知ることは、それをしないかなり不安な理由のようです。たとえば、将来のリリースでこの動作が変更されたらどうなりますか?あなたが特定の理由がない限り、ルールに固執するのは簡単です。 –