Entity Framework
transaktioner
Sök…
Database.BeginTransaction ()
Flera operationer kan utföras mot en enda transaktion så att ändringar kan rullas tillbaka om någon av operationerna misslyckas.
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
}
}
}
Observera att det kan vara en utvecklare-konvention att anropa transaction.Rollback()
uttryckligen, eftersom det gör koden mer självförklarande. Det kan också finnas (mindre kända) frågeföretag för Entity Framework där ute som inte implementerar Dipsose
korrekt, vilket också kräver en uttrycklig transaction.Rollback()
.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow