我正在尝试使用Ninject将存储库注入我的MVC项目的控制器。
public class HomeController : Controller
{
private readonly ICustomerRepository _customerRepository;
//
// GET: /Home/
public HomeController(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
}
这一切都很有意义并且很容易,但是当视图变得更复杂并且需要显示主细节场景时,我是否应该注入两个存储库接口?如果它达到4或5级深度会改变吗? (例如,用户选择客户,项目,小组,部门,然后获取人员列表)
我想出了三件事。
我应该使用这种模式的最佳做法吗?任何见解都会很棒。
答案 0 :(得分:1)
选项3是最好的 - 选项1会增加HomeController
的依赖项数量,这会使数据源数量增加时过于复杂。选项2为您的“超级存储库”创建了类似的问题,因为它需要大量方法来支持系统中的所有查询。
为每个较小的表单创建一个控制器将允许每个控制器相当简单,更容易推理。
答案 1 :(得分:0)
我一直在学习如何将控制器视为 - 一切的控制者。如果采用这种方法,那么我认为让它了解多个存储库/服务是完全没问题的。
主存储库方法的工作原理以及控制器端所需的实例化程度较低,但它对您正在做的事情的描述不那么明确,并使控制器更多地依赖于存储库/服务的内部知识。