Dispose()を使用する方法と理由を誰かに説明してもらえますか?これは、ASP.NET MVC 4に付属している既定のコントローラーテンプレートの一部です。オブジェクト(この場合はデータベースのデータ)が使用されなくなったときに、.NETのガベージコレクターが自動的に起動するべきではありませんか?
データベースからロードするときにDispose()を使用する必要がありますが、通常のオブジェクト割り当ては使用しないでください。
Dispose()を使用する方法と理由を誰かに説明してもらえますか?これは、ASP.NET MVC 4に付属している既定のコントローラーテンプレートの一部です。オブジェクト(この場合はデータベースのデータ)が使用されなくなったときに、.NETのガベージコレクターが自動的に起動するべきではありませんか?
データベースからロードするときにDispose()を使用する必要がありますが、通常のオブジェクト割り当ては使用しないでください。
ガベージコレクションは、管理対象のメモリリソースで自動的に機能します。ただし、アンマネージメモリまたは解放する必要のあるファイルハンドルなどの特別な非メモリリソースを使用するクラスが存在する場合があります。
Entity Frameworkコンテキストは、共有接続プールから接続にアクセスします。これらの接続は使用されなくなるため、いつそれらの接続を放棄できるかを通知する必要があります。
データベースからロードするときにDispose()を使用する必要がありますが、通常のオブジェクト割り当ては使用しないでください。
Disposeメソッドは、アンマネージメモリまたは非メモリリソースを使用する可能性のあるクラスによってのみ実装する必要があります。クラスがIDisposable
インターフェースを実装Dispose
している場合は、そのオブジェクトを使い終わったときに常にそれを呼び出す必要があります。
Dispose
管理されていないリソースを処理するときに使用されます(いわば、Disposableパターン)。はい、.NETガベージコレクターは.NET管理対象オブジェクトをクリーンアップしますが、データベース接続は.NETFrameworkによって管理されていない下位レベルのオブジェクトです。ファイルハンドラーについても同じです。実際のファイルハンドルは.NETによって管理されないため、ファイルを開いたり書き込んだりするときにDisposeパターンを使用します。
MSDNのドキュメントには、それを実装する理由とその理由が記載IDisposable
されています。
EFはこれを使用します。これDbContext
は、その下に、DbDataConnection
管理されていないリソースで機能するが含まれているためです。そのような状況では、それにIDisposable
応じて管理されていないリソースのクリーンアップを実装して処理するのが最善です。