In meiner ASP.NET MVC5 Identity 2 Anwendung versuchen, Transaktionen zu verwenden, aber es funktioniert nicht.Klicken Sie bitte den folgenden Code die Transaktionen nicht funktioniert.Wenn var saveteacher = _teacherService.Create(aTeacher);
nicht erfolgreich einfügen dann AspNetUsers Rollback nicht aus der Datenbank.Verwendung von Transaktionen in ASP.NET MVC-Identität 2?
Code:
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);
}
}
}
Sieht echt aus. Hast du den Code im Debugger durchgegangen? Wird 'trans.Rollback()' jemals bei einem Fehler aufgerufen? – trailmax
nein :(aber catch throw Ausnahme ex {"Validierung fehlgeschlagen für eine oder mehrere Entitäten. Siehe 'EntityValidationErrors' Eigenschaft für weitere Details."} Was ich zum Testen gemacht habe –
wo ist das geworfen? Sie haben 3 Stellen in Sie Code, dass kann diese Ausnahme werfen, alle von ihnen sind in 'try-catch' verpackt, aber Sie tun' Rollback' in den Fang. Wird dieser Rollback nicht ausgeführt? – trailmax