Entity Framework
операции
Поиск…
Database.BeginTransaction ()
Для одной транзакции можно выполнить несколько операций, чтобы изменения можно было отбросить, если какая-либо из операций завершилась неудачей.
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
}
}
}
Обратите внимание, что это может быть соглашение разработчиков о вызове transaction.Rollback()
явно, потому что это делает код более понятным. Кроме того, могут существовать (менее известные) поставщики запросов для Entity Framework, которые не реализуют Dipsose
правильно, что также потребует явного вызова transaction.Rollback()
.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow