TransactionScope事务
个人理解就是: 吧一些方法封装在TransactionScope里面,如果全部执行成功 那么事务就会提交 方法执行,加入其中一个方法不成功,事务就会自动回滚。代码重用性高
TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事物。使用之前必须添加对 System.Transactions.dll 的引用。
下列代码就是一个正在创建的事务,这个事务自身还封装了多个数据库查询。只要任意一个 SqlCommand 对象引发异常,程序流控制就会跳出 TransactionScope 的 using 语句块,随后,TransactionScope 将自行释放并回滚该事务。由于这段代码使用了 using 语句,所以 SqlConnection 对象和 TransactionScope 对象都将被自动调用Dispose()释放。由此可见,只需添加很少的几行代码,您就可以构建出一个事务模型,这个模型可以对异常进行处理,执行结束后会 自行清理,此外,它还可以对命令的提交或回滚进行管理。
//创建TransactionScope
using (TransactionScope tsCope= new TransactionScope()) { using (SqlConnection cn2005= new SqlConnection(someSql2005))
{
SqlCommand cmd= new SqlCommand(sqlUpdate, cn2005); cn2005.Open();
cmd.ExecuteNonQuery(); }
using (SqlConnection cn2005= new SqlConnection(anotherSql2005)) { SqlCommand cmd= new SqlCommand(sqlDelete, cn2005);
cn2005.Open();
cmd.ExecuteNonQuery(); }
tsCope.Complete();
}
Server=(local)SQL2005;Database=Northwind;Integrated Security=SSPI;auto-enlist=false
上面所看到的示例中我们使用了TransactionScope的默认设置。TransactionScope有三种模式:
如果已经存在一个事务,那么这个事务范围将加入已有的事务。否则,它将创建自己的事务。
如果处于当前活动事务范围内,那么这个事务范围既不会加入氛围事务 (ambient transaction),也不会创建自己的事务。当部分代码需要留在事务外部时,可以使用该选项。
TransactionScope事务相关推荐
- c#传统SqlTransaction事务和TransactionScope事务
事务有很多种,看了一些关于事务的问题,这里做下笔记····· 事务时单个的工作单位.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久的组成部分.若果事务遇到错误,则必须取消或 ...
- EF 多线程TransactionScope事务异常事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
在使用EF的TransactionScope事务时,如果多线程程序,经常会抛出如下异常 {"事务(进程 ID 58)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务 ...
- TransactionScope事务简介
在.NET 1.0/1.1 版本我们使用SqlTransaction.处理事务 string connString = ConfigurationManager.ConnectionStrings[& ...
- 【转】TransactionScope事务简介
在.NET 1.0/1.1 版本我们使用SqlTransaction.处理事务 string connString = ConfigurationManager.ConnectionStrings[& ...
- TransactionScope 事务使用说明
TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间.它的用途是为数据库访问提供了一个"轻量级"[区别于:SqlTransaction]的 ...
- 第七节: EF的三种事务的应用场景和各自注意的问题(SaveChanges、DBContextTransaction、TransactionScope)
一. 什么是事务 我们通俗的理解事务就是一系列操作要么全部成功.要么全部失败(不可能存在部分成功,部分失败的情况). 举一个事务在我们日常生活中的经典例子:两张银行卡(甲.乙),甲向乙转钱,整个过程需 ...
- .net EF 事务TransactionScope和BeginTransaction的用法
事务就是确保一次数据库操作,所有步骤都成功,如果哪一步出错了,整个操作都将回滚.在EF使用事务有两种方案,一种是EF自带的.BeginTransaction()方法,另一种是使用Transaction ...
- .net mysql transactionscope_C#中的事务TransactionScope
TransactionOptions transactionOption = newTransactionOptions();//设置事务隔离级别 transactionOption.Isolatio ...
- 数据库事务与TransactionScope代码事务区别
1.TransactionScope代码事务 TransactionScope 类 位于using System.Transactions;命名空间下,需要在引用中手动加入.该类不能被继承. //// ...
最新文章
- 向量空间和计算机科学与技术,向量空间
- 岳西中自机器人_中国科学院
- C++ STL 遍历 map 的时候如何删除其中的 element
- 【转】C#命名空间与java包的区别分析
- 苹果id是什么格式的_iTunes Converter mac(音频格式转换工具)
- UnityShader3:ShaderLab
- c#服务器后台搭建_微信影视小程序搭建拆解:第一课,影视小程序简介,搭建影视小程序的整体流程...
- Android 端 Rsa加密数据
- 测试远程服务器udp端口,测试远程udp端口
- 《Web应用基础》课程结业报告
- Protractor小结
- 路由器连接路由器设置方法
- 朋友圈图片评论功能,来了!
- 计算机考证上传照片说明
- BZOJ 4239 巴士走读
- 【Protle99SE】PCB中各层的含义【小汇】
- FPGA经验谈系列文章——FPGA资源评估
- html中怎么制作选择头像,网页中的个人头像选择框(转)
- Android常用开源库整理汇总
- 使用pytorch完成kaggle猫狗图像识别