Выполнение нескольких действий с идентификацией в транзакцииC#

Место общения программистов C#
Ответить
Anonymous
 Выполнение нескольких действий с идентификацией в транзакции

Сообщение Anonymous »

Я хочу выполнить в транзакции несколько действий, связанных с идентификацией. В документации есть некоторые рекомендации для EF в целом, но не для Identity в частности.
Я использую этот подход:

Код: Выделить всё

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
}
Если выполнение попадает в блок catch, транзакция не фиксируется и удаляется (и, таким образом, автоматически откатывается).
Чего я не делаю понять, является ли _context тем же, что используется внутри _userManager? Я думаю, что контекст по умолчанию регистрируется как ограниченный (для каждого запроса), поэтому я предполагаю, что в HTTP-запросе ASP.NET Core один и тот же контекст будет использоваться как Identity, так и моим кодом.
Это правильно? И является ли мой код «правильным» или его можно улучшить?

Подробнее здесь: https://stackoverflow.com/questions/782 ... ransaction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»