Допустим, у вас есть служба UsersService, служба TenantsService и служба TenantUserRolesService.
Каждая из этих служб имеет метод «создания» для создания своей сущности и имеет одинаковую внедренную зависимость DbContext, за исключением UsersService, в который введен класс Identity UserManager.
Ваша цель - предоставить конечную точку API, которая позволяет регистрировать нового арендатора, который создает сущность User, Tenant и TenantUserRole. TenantUserRole создается последним и является ассоциативной сущностью с внешними ключами для вновь созданного пользователя, вновь созданного арендатора и роли «Владелец».
Каков наилучший способ создания элементарной транзакции между этими 3 службами, чтобы в случае сбоя одного создания все было откатано, и БД не находилась в нерабочем состоянии, где есть арендаторы без пользователей или пользователи без арендаторов и т. д.
Я смотрел на: https://docs.microsoft.com/en-us/ef/core/saving/transactions,, но я не могу понять, есть ли способ использовать эти методы между различными классами обслуживания.
Единственный способ, которым я могу придумать, - это использовать императивный подход и вручную проверять результат каждого создания, а в случае ошибки использовать ту же службу сущностей для удаления недавно созданной сущности.
Я надеюсь, что есть кто-то, кто немного более осведомлен в этом вопросе, который может направить меня в правильном направлении.
Спасибо