W mojej aplikacji ASP.NET MVC5 Identity 2, próbującej użyć transakcji, ale nie działa. Proszę zapoznać się z poniższym kodem transakcje nie działają. Jeśli var saveteacher = _teacherService.Create(aTeacher);
nie wstawić pomyślnie, AspNetUsers nie wycofanie z bazy danych.Jak korzystać z transakcji w tożsamości ASP.NET MVC 2?
Kod:
using (var dataContext = new SchoolMSDbContext())
{
using (var trans = dataContext.Database.BeginTransaction(IsolationLevel.ReadCommitted))
{
try
{
var adminresult =await UserManager.CreateAsync(user, teacherViewModel.Password);
if (adminresult.Succeeded)
{
aTeacher.Id = user.Id;
var saveteacher = _teacherService.Create(aTeacher);
}
else
{
trans.Rollback();
ModelState.AddModelError("", adminresult.Errors.First());
return View();
}
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
Console.WriteLine(ex.InnerException);
}
}
}
Wygląda na legit. Czy przejrzałeś kod w debugerze? Czy 'trans.Rollback()' kiedykolwiek wywołało błąd? – trailmax
no :(ale catch throw Exception ex {"Walidacja nie powiodła się dla jednej lub więcej encji Zobacz więcej informacji na temat właściwości EntityValidationErrors."} Które zrobiłem dla testowania –
skąd to jest wyrzucane? Masz 3 miejsca w tobie, że kod może rzucić ten wyjątek, wszystkie są zawijane w 'try-catch', ale robisz' Rollback' w haczyku.Czy to wycofanie nie jest wykonywane? – trailmax