我在员工和团队之间有多对多的关联。 Foreach实体我有一个存储库。
现在我使用ASP.NET MVC并创建了一个EmployeeController。我还创建了一个View来编辑一个Employee。对于这个视图,我需要一个包含所有团队的DropDownList。问题是我的EmployeeController只有EmployeeRepository。那么我怎样才能得到所有团队? 我现在的解决方案是使用两个存储库。
但这是一个很好的解决方案吗?
我可以改为创建TeamController并编写一个返回所有团队的方法(我该怎么做)?
答案 0 :(得分:10)
这很好,但是一旦你觉得控制器变得太乱了,你可以refactor its dependencies to an Aggregate Service。
答案 1 :(得分:8)
是的,控制器引用两个存储库是完全可以接受的。
事实上,我的控制器经常使用多个存储库。
答案 2 :(得分:3)
想聪明吗?不要在控制器内部使用存储库。而是使用域服务。当你认为一个控制器集成了许多服务的工作时,它听起来不是很糟糕吗?
答案 3 :(得分:1)
通常,您将为聚合根创建存储库。存储库将具有返回为控制器填充的实体的方法。
如果您的域模型中的实体完全不相关,您可能需要创建一个包含两个单独存储库的服务来获取所需的数据。