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

发布于 2024-08-23 08:35:02 字数 289 浏览 11 评论 0原文

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

现在我使用 ASP.NET MVC 并创建了一个 EmployeeController。我还创建了一个视图来编辑员工。对于此视图,我需要一个包含所有团队的 DropDownList。问题是我的 EmployeeController 只有 EmployeeRepository。那么如何获得所有团队呢? 我现在的解决方案是使用两个存储库。

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

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

I have a many-to-many assocition between an Employee and a Team.
Foreach entity I have a repository.

Now I use ASP.NET MVC and I created a EmployeeController. I also created a View to edit an Employee. For this view I need a DropDownList with all Teams. The problem is that my EmployeeController only has got EmployeeRepository. So how can I get all Teams?
My solution now is to use two repositories.

But is this a good solution?

Could I instead create TeamController and write a method returning all Teams (how would I do that)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

神妖 2024-08-30 08:35:02

没关系,但是一旦你觉得 Controller 变得太混乱,你可以 重构它对聚合服务的依赖

It's quite OK, but once you feel that the Controller becomes too cluttered, you can refactor its dependencies to an Aggregate Service.

夜空下最亮的亮点 2024-08-30 08:35:02

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

事实上,我的控制器经常与多个存储库一起工作。

Yes, it's perfectly acceptable for a controller to have references to two repositories.

In fact, my controllers work with multiple repositories more often than not.

腹黑女流氓 2024-08-30 08:35:02

想要变得聪明吗?请勿在控制器内使用存储库。而是使用域服务。当您认为一个控制器集成了许多服务的工作时,这听起来并没有那么糟糕,不是吗?

Wanna go smart? Do not use repositories inside controllers whatsoever. Instead use Domain Services. It doesn't sound so bad when you think one controller integrates the work of many services doesn't it?

欢烬 2024-08-30 08:35:02

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

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

Typically you would create a repository for the aggregate root. The repository would have methods returning the entities populated for the controller.

If the entities are totally unrelated in your domain model you may want to create a service wrapping the two separate repositories to get the data you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文