Я работаю с ASP. NET Core MVC с некоторого времени, и я сталкиваюсь с огромной проблемой с организацией моего кода на сервисном уровне. В некоторых приложениях сервисы используются друг в друге (что, по моему мнению, может вызвать проблемы циклической зависимости), но в других сервисы внедряют только контекст БД и ничего больше (что я считаю лучше, потому что оно следует принципу separation of concerns
). Также другая проблема - когда действие должно выполнять несколько операций, например, сохранить стажировку для группы, а затем назначить всех текущих членов группы для этой стажировки. Если logi c разделен на InternshipService
и GroupService
, и они вызываются в некотором действии InternshipsController
, например:
this.internshipService.Add(someInternshipDto);
var members = this.groupService.GetAllMembers();
this.internshipService.AssignGroupMembers(members);
Если AssignGroupMembers
по какой-то причине не удается, мы будет иметь противоречивые данные в нашей базе данных. Одно из решений проблемы - просто переместить все логи c в InternshipsService
, выполнить все необходимые операции и, наконец, вызвать SaveChanges()
, но это нарушит принцип separation of concerns
.
Я довольно смущен этим, поэтому, пожалуйста, скажите мне, что вы делаете, чтобы решить эти проблемы!