質問: new EFDbContext() ``` コントローラ、サービス層、あるいはその両方で?私は依存症注射でこれを行うことができることを読んだ。私はすでにIOCとしてUnityを使用していますが、私はこれをどうやって行うことができるのか分かりません。
回答: Entity Frameworkのは、すでに作業パターンの実装の単位だけでなく、一般的なリポジトリの実装(DbContextがUOWで、DbSetジェネリックリポジトリである) *です* 。そして、私は、他のUoWまたはGeneric Repositoryをエンジニアリングする(ほとんどの場合、GenericRepsitoryはいくつかのアンチパターンであると見なされています)、ほとんどのアプリで過度な方法であることに同意します。 サービス層は具体的なリポジトリとして機能することができ、ビジネスニーズに応じたデータロジックをカプセル化することで多くのメリットがあります。これを使用する場合、その上にリポジトリを構築する必要はほとんどありません(WCFからWebApiなど、バックエンドサービス技術を変更できないようにしたい場合を除きます) すべてのデータアクセスをサービスレイヤに配置します。あなたのコントローラでデータアクセスをしないでください。データレイヤーがUIレイヤーに漏れてしまっていますコアのSOLIDコンセプトの多くに違反しています。 しかし、あなたのアプリケーションが非常に複雑で、複数の環境で動作することを意図しない限り、あなたはUnitOfWorkや他の層をそれ以上に必要としません。