TransactionScope的正确用法(转自:http://blog.csdn.net/greystar/article/details/1359960)
前一阵贴了一个关于transactionscope的贴子,以为是MS的BUG。后来经过认真仔细的调试,才找到原因。
原来的代码本身是没有没问题的。只是关于事务资源的处理放错了地方。正确的写法应该如下
如果A类是使用数据库资源的。
class A
{
SqlConnection cn=null;
public A()
{
.....
cn.open();
}
}
//开始事务
using(transactionscope scope=new transactionscope())
{
//要确保对支持事务的资源的登记放在此范围内,如数据库资源的打开
A a=new A();
a.method();
.....
scope.comlete()
}
我们只要确保数据库的打开操作是在事务范围内打开就行了。这样就可以做到事务的正确操作。
以前的代码是因为一个业务对象的初始化操作在外部进行了。尽管后来在事务范围内进行业务操作,也不行.
A a=new A();
using(transactionscope scope=new transactionscope())
{
//要确保对支持事务的资源的登记放在此范围内,如数据库资源的打开
a.method();
.....
scope.comlete()
}
上述代码,其实是没有参与任何事务的。对于子事务而已也是一样,只要保证事务登记在事务范围内才正确
我是查看了数据库中打开连接的情况才知道上面的原理。真是惭愧的很.
TransactionScope的正确用法(转自:http://blog.csdn.net/greystar/article/details/1359960)的更多相关文章
- 炸天的3D引擎OpenCASCADE的用法及案例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3001.5502)
		What CASCADE?Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一.开 ... 
- js中index()的四种经典用法(转https://blog.csdn.net/superit401/article/details/51726826)
		<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ... 
- Postman用法简介----https://blog.csdn.net/flowerspring/article/details/52774399
		https://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介 
- matplotlib绘图基本用法-转自(http://blog.csdn.net/mao19931004/article/details/51915016)
		本文转载自http://blog.csdn.net/mao19931004/article/details/51915016 <!DOCTYPE html PUBLIC "-//W3C ... 
- Socket的用法——NIO包下SocketChannel的用法  ———————————————— 版权声明:本文为CSDN博主「茶_小哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ycgslh/article/details/79604074
		服务端代码实现如下,其中包括一个静态内部类Handler来作为处理器,处理不同的操作.注意在遍历选择键集合时,没处理完一个操作,要将该请求在集合中移除./*模拟服务端-nio-Socket实现*/pu ... 
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
		Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ... 
- Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219
		Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个 ... 
- 梧桐那时雨http://blog.csdn.net/fuchaosz/article/details/51882935?readlog
		Ubuntu 16.04 一系列软件安装命令,包括QQ.搜狗.Chrome.vlc.网易云音乐安装方法 原创 2016年07月20日 11:44:01 标签: ubuntu 27024 1 简介 Ub ... 
- matlab 降维工具   转载【https://blog.csdn.net/tarim/article/details/51253536】
		降维工具箱drtool 这个工具箱的主页如下,现在的最新版本是2013.3.21更新,版本v0.8.1b http://homepage.tudelft.nl/19j49/Matlab_Toolb ... 
随机推荐
- Notepad++ Java开发环境配置
			1. 安装JDK 下载JDK 6下载 http://developers.sun.com.cn/download/java_se.html 运行安装程序,按照屏幕提示完成JDK 6的安装,下面为安装路 ... 
- 安卓4.2原生rom状态栏显示运营商
			前言:要调整状态栏布局,需反编译systemui.apk.单卡机修改status_bar.xml和signal_cluster_view.xml,双卡机修改gemini_status_bar.xml和 ... 
- html5与EmguCV前后端实现——人脸识别篇(一)
			上个月因为出差的关系,断更了很久,为了补偿大家长久的等待,送上一个新的系列,之前几个系列也会抽空继续更新. 大概半年多前吧,因为工作需要,我开始研究图像识别技术.OpenCV在这方面已经有了很多技术积 ... 
- 网站(Tomcat)超线程宕机
			网站大中午的又挂了····· 拷了日志如下: 2014-4-12 13:22:30 org.apache.tomcat.util.net.JIoEndpoint createWorkerThread信 ... 
- 转:pthread_create()
			http://blog.csdn.net/youbang321/article/details/7815707 原型:int pthread_create((pthread_t *thread, ... 
- Android上传文件之FTP
			android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /** ... 
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
			Nginx反向代理到单个PHP-FPM(PHP-FPM可位于不同机器) 0.首先,创建我们的网站根目录[注:须在PHP-FPM所在的那台机器创建](以后网站的代码放到此目录下): mkdir /opt ... 
- LINQ 学习笔记(1)
			学习资源参考 : http://www.cnblogs.com/lifepoem/archive/2011/12/16/2288017.html 常用方法是 Where, OrderBy, Selec ... 
- COJ 0252 HDNOIP201304阻断传染
			HDNOIP201304阻断传染 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 H国有n个城市,n个城市用n ... 
- 将大型 Page Blob 的页范围进行分段
			 Windows Azure 存储支持一种 Blob 类型,即 Page Blob.Page Blob 通过仅将已写入但未清除的页存入物理存储, 来有效存储稀疏数据.每页大小为 512 字节.Ge ... 
