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();