Ninject を MVC アプリケーションに組み込み、コントローラーのコンストラクターに DbContext を導入するために最近講じた手順により、当然のことながら、いくつかの疑問が生じます。発生:
Ninject は、私のファイルのクリーンアップと適時の廃棄を保証しますか? DbContext インスタンス?
この応答で説明されているように:
CLR ドキュメントごとに、Disposable オブジェクトの作成者は Dispose (この場合は Ninject) を呼び出す責任があります。したがって、Dispose への明示的な呼び出しは推奨されません。
Ninject は、関連付けられているスコープ オブジェクトを GC が収集するとすぐに、InTransientScope() 以外のスコープ内の Disposable オブジェクトを破棄します。したがって、すべての Disposable オブジェクトは、InTransientScope() ではないスコープを使用してバインドされる必要があります。
各コントローラーに DbContext 引数を含める要件を排除することは可能ですか?
MVC コントローラーに共有基本クラスを使用することは完全に避けてください。クラスの継承により密結合が促進され、保守性が妨げられます。さらに、各コントローラーのさらなる依存関係を必要とする「ゴッド オブジェクト」を作成する傾向があります。
あるいは、横断的な問題に対処するために、グローバルに登録されたフィルターを利用することを検討してください。共有基本クラスによって違反される可能性がある単一責任原則に準拠して、個別の論理コンポーネント用に特定のフィルターを設計できます。これらをグローバルに登録することで、コンストラクター インジェクションを使用したり、コントローラー レベルやアクション レベルで条件付きアプリケーションの属性 (動作なし) を作成したりすることもできます。
DbContext インスタンスの作成を最適化するにはどうすればよいですか?
洞察については、次の質問を参照してください: [Web リクエストごとに 1 つの DbContext...なぜ?](https://stackoverflow.com/questions/9155198/one-dbcontext-per-web-request-why)
以上がNinject と DbContext: 適切な廃棄の確保とインスタンス作成の最適化?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。