记录TransactionScope简单用法,示例如下:
1 void Test() 2 { 3 using (TransactionScope scope = new TransactionScope()) 4 { 5 try 6 { 7 方法一(); 8 方法二(); 9 10 // 完成 11 scope.Complete(); 12 } 13 catch (Exception e) 14 { 15 记录日志(e); 16 } 17 finally 18 { 19 // 提交,释放资源 20 scope.Dispose(); 21 } 22 } 23 }
问题1.这次使用的Access数据库,报错“提供程序不支持 ITransactionLocal 接口”。
解决方法:在连接字符串里,加上"OLE DB Services=-4",作用是禁用 OLE DB 会话池和自动事务登记。副作用是在频繁使用相同连接字符串打开和关闭连接,性能将受影响。
问题2.提交和回滚的原理见老A博文:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html