典型的なアーキテクチャの MVC アプリケーションがあります...
ASP.NET MVC コントローラー -> 個人サービス -> 個人リポジトリ -> Entity Framework DB コンテキスト
私は Castle Windsor を使用していますが、これを ControllerFactory と一緒に使用して、適切な依存関係を持つコントローラーを作成する利点を理解できます。このアプローチを使用すると、コントローラーはサービスを注入します。これにより、適切なリポジトリを構築する方法がわかり、使用する正しい DbContext が認識されます。
ウィンザー構成はこのようなものです...
dicontainer = new WindsorContainer();
dicontainer.Register(Component.For<IPersonService>().ImplementedBy<PersonService>());
dicontainer.Register(
Component.For<IPersonRepository>().UsingFactoryMethod(
() => new PersonRepository(new HrContext("connectionString"))));
これは正しい方法ですか?UsingFactoryMethod は好きではありませんが、別の方法は考えられません。
また、リポジトリが、サービス層では必要のない依存関係 (ILogger など) を必要とした場合はどうなるでしょうか? これは、ILogger をサービス層に渡して使用しないようにする必要があるということですか。これはデザインが悪いようです。ここでいくつかの指針をいただければ幸いです。たくさんの記事を読みましたが、これが正しいかどうかを確認するための具体的な例は見つかりませんでした。ありがとう。