BestPractices:在MVC控制器中使用多个存储库是否可以接受?

时间:2010-02-24 20:53:17

标签: asp.net-mvc model-view-controller controller repository

我在员工和团队之间有多对多的关联。 Foreach实体我有一个存储库。

现在我使用ASP.NET MVC并创建了一个EmployeeController。我还创建了一个View来编辑一个Employee。对于这个视图,我需要一个包含所有团队的DropDownList。问题是我的EmployeeController只有EmployeeRepository。那么我怎样才能得到所有团队? 我现在的解决方案是使用两个存储库。

但这是一个很好的解决方案吗?

我可以改为创建TeamController并编写一个返回所有团队的方法(我该怎么做)?

4 个答案:

答案 0 :(得分:10)

这很好,但是一旦你觉得控制器变得太乱了,你可以refactor its dependencies to an Aggregate Service

答案 1 :(得分:8)

是的,控制器引用两个存储库是完全可以接受的。

事实上,我的控制器经常使用多个存储库。

答案 2 :(得分:3)

想聪明吗?不要在控制器内部使用存储库。而是使用域服务。当你认为一个控制器集成了许多服务的工作时,它听起来不是很糟糕吗?

答案 3 :(得分:1)

通常,您将为聚合根创建存储库。存储库将具有返回为控制器填充的实体的方法。

如果您的域模型中的实体完全不相关,您可能需要创建一个包含两个单独存储库的服务来获取所需的数据。