Как откатить изменения в ASP.NET Core 2 - PullRequest
0 голосов
/ 24 июня 2019

Мне нужна помощь с моим кодом.В настоящее время в моем приложении ASP.NET Core 2 я создаю пользователя следующим образом:

var result = await _userManager.CreateAsync(user, password);

В случае успеха я добавляю пользователя в роли и выполняю некоторые другие операции с базой данных.

        if (result.Succeeded)
        {
           var roleResult = await _userManager.AddToRoleAsync(user,"Admin");
           if(roleResult.Succeeded)
           {
            await _repository.AddToGroup("External");
            await _repository.AssignToRoom(RoomEnum.Office);
           }
        }

Если по какой-либо причине AddToGroup () или AssignToRoom () не удастся создать, пользователь не должен быть создан и не должен добавляться в роли.Я хотел бы отменить создание пользовательской операции полностью.Как этого добиться?

1 Ответ

0 голосов
/ 24 июня 2019

Вам нужно использовать TransactionScope класс. Используя этот класс, вы будете иметь методы Commit или Rollback, которые помогут вам зафиксировать всю транзакцию или откатить всю транзакцию.

Подробнее о TransactionScope:

  1. https://docs.microsoft.com/en-us/dotnet/api/system.transactions.transactionscope?view=netframework-4.8
  2. https://docs.microsoft.com/en-us/ef/ef6/saving/transactions#combining-several-operations-into-one-transaction-within-the-same-context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...