Entity Framework
Transaktionen
Suche…
Database.BeginTransaction ()
Mehrere Vorgänge können für eine einzelne Transaktion ausgeführt werden, sodass Änderungen rückgängig gemacht werden können, wenn einer der Vorgänge fehlschlägt.
using (var context = new PlanetContext())
{
using (var transaction = context.Database.BeginTransaction())
{
try
{
//Lets assume this works
var jupiter = new Planet { Name = "Jupiter" };
context.Planets.Add(jupiter);
context.SaveChanges();
//And then this will throw an exception
var neptune = new Planet { Name = "Neptune" };
context.Planets.Add(neptune);
context.SaveChanges();
//Without this line, no changes will get applied to the database
transaction.Commit();
}
catch (Exception ex)
{
//There is no need to call transaction.Rollback() here as the transaction object
//will go out of scope and disposing will roll back automatically
}
}
}
Beachten Sie, dass es eine Konvention von Entwicklern sein kann, transaction.Rollback()
explizit aufzurufen, da der Code dadurch selbsterklärender wird. Außerdem gibt es möglicherweise (weniger bekannte) Abfrageanbieter für Entity Framework, die Dipsose
korrekt implementieren. Dipsose
würde auch einen expliziten transaction.Rollback()
erfordern.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow