Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用控制器依赖项注入的具有多个存储库的主详细信息视图_C#_Asp.net Mvc_Dependency Injection_Ninject_Asp.net Mvc 3 - Fatal编程技术网

C# 使用控制器依赖项注入的具有多个存储库的主详细信息视图

C# 使用控制器依赖项注入的具有多个存储库的主详细信息视图,c#,asp.net-mvc,dependency-injection,ninject,asp.net-mvc-3,C#,Asp.net Mvc,Dependency Injection,Ninject,Asp.net Mvc 3,我正试图使用Ninject将存储库注入我的MVC项目的控制器中 public class HomeController : Controller { private readonly ICustomerRepository _customerRepository; // // GET: /Home/ public HomeController(ICustomerRepository customerRepository)

我正试图使用Ninject将存储库注入我的MVC项目的控制器中

public class HomeController : Controller
    {
        private readonly ICustomerRepository _customerRepository;
        //
        // GET: /Home/
        public HomeController(ICustomerRepository customerRepository)
        {
            _customerRepository = customerRepository;
        }
     }
这一切都很有意义,也很简单,但是当视图变得更复杂并且需要显示主细节场景时,我是否将这两个存储库接口都注入其中?如果深度达到4或5级,这种情况会改变吗?(例如,用户选择客户、项目、组、部门,然后获得人员列表)

我想到了三件事

  • 通过构造函数注入所有必要的存储库
  • 创建超级存储库的概念,或
  • 为每个存储库创建局部视图和控制器

  • 对于我应该使用的模式,是否有最佳实践?任何洞察都很好。

    选项3是最好的-选项1增加了
    HomeController
    的依赖项数量,这将随着数据源数量的增加而变得过于复杂。选项2为“超级存储库”创建了一个类似的问题,因为它需要大量的方法来支持系统中的所有查询


    为许多较小的表单分别创建一个控制器将使每个表单变得相当简单且更易于推理。

    我一直在学习如何将控制器视为所有表单的控制器。如果您采用这种方法,那么我认为让它了解多个存储库/服务是完全好的


    主存储库方法工作得很好,控制器端所需的实例化更少,但它对您所做的事情没有那么明确,并且使控制器更多地依赖于存储库/服务的内部知识。

    我可以看到这一点……但让我们面对它,控制器中的2个依赖项并不是“太多”。