EF支持事务处理操作,以下语句会获取当前DbContext对象专用的DbContextTransaction()事务处理对象
DbContextTransaction transaction=context.Database.BeginTransaction();
获取transaction之后,期间任何与context有关的数据操作均会纳入此事务处理的范围中,调用transaction.Commit方法即可完成事务处理,若要放弃事务处理,则调用transaction.Rollback方法即可达到目的。
//using TransactionsDemo.Model;
using (KTStoreContext context = new KTStoreContext())
{
using (var transaction = context.Database.BeginTransaction())
{
try
{
var products = context.Products;
foreach (Product product in products)
{
int p = (int)(product.Price * 0.5);
product.SPrice = p;
}
int c = context.SaveChanges();
transaction.Commit();
Console.WriteLine("更新了 {0} 项数据", c);
}
catch (Exception ex)
{
transaction.Rollback();
Console.WriteLine("事务处理失败");
}
}
}
Console.ReadKey();