Я использую этот подход:
Код: Выделить всё
using var transaction = await _context.Database.BeginTransactionAsync();
try
{
var result1 = await _userManager.Foo();
if (!result1.Succeeded)
throw new Exception("Could not foo.");
var result2 = await _userManager.Bar();
if (!result2.Succeeded)
throw new Exception("Could not bar.");
await transaction.CommitAsync();
}
catch (Exception e)
{
_logger.LogError(e, "Something bad happened, but changes were rolled back.");
// ...handle error
}
Чего я не делаю понять, является ли _context тем же, что используется внутри _userManager? Я думаю, что контекст по умолчанию регистрируется как ограниченный (для каждого запроса), поэтому я предполагаю, что в HTTP-запросе ASP.NET Core один и тот же контекст будет использоваться как Identity, так и моим кодом.
Это правильно? И является ли мой код «правильным» или его можно улучшить?
Подробнее здесь: https://stackoverflow.com/questions/782 ... ransaction
Мобильная версия