【发布时间】:2020-07-16 12:08:12
【问题描述】:
我一直在使用 ASP.NET Core MVC,但在服务层中组织我的代码时遇到了一个巨大的问题。在某些应用程序中,服务是相互使用的(根据我的说法,这可能会导致循环依赖问题),但在其他应用程序中,服务只注入 db 上下文而不注入其他任何东西(我认为这更好,因为它遵循 separation of concerns 主体)。另一个问题是当一个动作应该执行多个操作时,例如保存一个组的实习,然后将所有当前组成员分配给这个实习。如果逻辑分离为InternshipService 和GroupService,并且它们在InternshipsController 的某些操作中被调用,如下所示:
this.internshipService.Add(someInternshipDto);
var members = this.groupService.GetAllMembers();
this.internshipService.AssignGroupMembers(members);
如果AssignGroupMembers 出于某种原因失败,我们的数据库中将有不一致的数据。该问题的一种解决方案是移动InternshipsService 中的所有逻辑,执行我需要的所有操作,最后调用SaveChanges(),但这会破坏separation of concerns 主体。
我对此感到很困惑,所以请告诉我,您为了解决这些问题做了什么!
【问题讨论】:
标签: c# asp.net asp.net-core asp.net-web-api service-layer