在TransactionScope的范围中,不需要明确调用UserTransaction,即可将所有事务处理纳入相同的范围中,这适合更广泛的事务处理操作。
using System.Transactions;
using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { using (KTStoreContext context = new KTStoreContext()) { try { var products = context.Products; foreach (Product product in products) { int p = (int)(product.Price * 0.5); product.SPrice = p; } int c = context.SaveChanges(); KTStoreContext context_s = new KTStoreContext( context.Database.Connection, contextOwnsConnection: false); context_s.Database.ExecuteSqlCommand( "UPDATE Product SET SPrice =0 WHERE Id=10 "); scope.Complete(); Console.WriteLine("更新了 {0} 项数据", c); } catch (Exception e) { Console.WriteLine("事务处理失败"); } Console.ReadKey(); } }