我正在尝试使用 Ninject 将存储库注入(inject)到我的 MVC 项目的 Controller 中。
public class HomeController : Controller
{
private readonly ICustomerRepository _customerRepository;
//
// GET: /Home/
public HomeController(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
}
这一切都说得通而且很容易,但是当 View 变得更复杂并且需要显示主要细节场景时,我是否将两个存储库接口(interface)都注入(inject)其中?如果深度达到 4 或 5 层,情况会改变吗? (例如用户选择客户、项目、组、部门,然后得到人员列表)
我想到了三件事。
- 通过构造函数注入(inject)所有必要的存储库。
- 创建 super 存储库的概念,或者
- 为每个存储库创建部分 View 和 Controller 。
是否有我应该为此使用的模式的最佳实践?任何见解都会很棒。
最佳答案
选项 3 是最好的 - 选项 1 增加了 HomeController
的依赖项数量,随着数据源数量的增加,这将使其变得过于复杂。选项 2 会为您的“ super 存储库”带来类似的问题,因为它将需要大量方法来支持您系统中的所有查询。
为许多较小的表单分别创建一个 Controller 将使每个表单都相当简单并且更容易推理。
关于c# - 使用 Controller 依赖注入(inject)的具有多个存储库的主从 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412483/