ninjectを使用して作成されたインスタンスは自動的に最後に配置されますか?ninjectを使用して作成されたインスタンスは自動的に最後に配置されますか?
原因私はEntity Frameworkを使用しており、新しいコンテキストのインスタンスにIContext
をバインドします。この文脈は最終的に廃棄されるのだろうか?
どうすればいいですか?何の
ninjectを使用して作成されたインスタンスは自動的に最後に配置されますか?ninjectを使用して作成されたインスタンスは自動的に最後に配置されますか?
原因私はEntity Frameworkを使用しており、新しいコンテキストのインスタンスにIContext
をバインドします。この文脈は最終的に廃棄されるのだろうか?
どうすればいいですか?何の
エンド
?
Ninjectの標準的なメカニズムは、Cache and Collectメカニズムです。これは、ガベージコレクションが弱参照型のリリースを選択した場合、非確定的にDispose
です。parent scope objectsです。
ASP.NETアプリケーション(またはHttpContext
が接続されたWCFパイプライン)の場合、.InRequestScope
は要求の最後に確定的にDispose
になります。
あなたの質問への真の答えは、これが50周年のEF/DIコンテナディスペンスの質問と重複しているということです。これらの質問を見つけるためにもう少し努力してください。
Unit Unit of Workに過度の負担をかけてシステムに処理させるように注意してください。ほとんどの場合、トランザクション単位が何であるかを知り、それに関連するコミットやエラー管理などを考慮したくはありません。些細なことである。
.InRequestScopeは私が探していたものであるようです。私はアプリケーションの終わりについて話していました。 – Rushino
@Rushino:OK、ちょっと疑念を避けるために、通常はIDisposableがアプリケーションの最後でトリガされることはない - InSingletonScope()は可能かもしれませんが、Transientsは決してしません(他のコンテナはトランジェント - Ninjectは効果的に時間の無駄だと言って、トランジェントスコープのオブジェクトを追跡しません) –
あなたはInRequestScopeはそうではありませんか? – Rushino