【问题标题】:What is the best service layer structure in ASP.NET Core applicationASP.NET Core 应用程序中最好的服务层结构是什么
【发布时间】:2020-07-16 12:08:12
【问题描述】:

我一直在使用 ASP.NET Core MVC,但在服务层中组织我的代码时遇到了一个巨大的问题。在某些应用程序中,服务是相互使用的(根据我的说法,这可能会导致循环依赖问题),但在其他应用程序中,服务只注入 db 上下文而不注入其他任何东西(我认为这更好,因为它遵循 separation of concerns 主体)。另一个问题是当一个动作应该执行多个操作时,例如保存一个组的实习,然后将所有当前组成员分配给这个实习。如果逻辑分离为InternshipServiceGroupService,并且它们在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


【解决方案1】:

我认为您将 (1) 业务逻辑和 (2) 数据持久性的问题混为一谈。 您可以拥有一个服务来处理逻辑,以及一个通用存储库(即DbContext)来处理数据。

例如:

this.repository.Add<Internship>(someInternshipDto); // data
var members = this.repository.GetAll<Member>(); // data
this.service.AssignGroupMembers(members); // logic
this.repository.SaveChanges(); // data

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多