分布式事物TransactionScope的正确用法

正确的写法应该如下

如果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()

}

上述代码,其实是没有参与任何事务的。对于子事务而已也是一样,只要保证事务登记在事务范围内才正确

其他参考文章:

.NET:脏读、不可重复读和幻读测试

http://www.cnblogs.com/happyframework/p/3284154.html

.NET:分布式事务

http://www.cnblogs.com/happyframework/p/4100106.html

时间: 2024-12-24 20:40:15

分布式事物TransactionScope的正确用法的相关文章

easyui的tabs update正确用法分享

 jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.下面说一下tabs update的正确用法 一直以为 tabs update 是 easyui 的 bug,最近在用的时候发现可以这样解决   代码如下: function updateTab(url) {       var tab = $('#tt').tabs('getSelected');       $("#tt")

改善C#程序的建议2:C#中dynamic的正确用法

原文:改善C#程序的建议2:C#中dynamic的正确用法 dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性.比如,即使你对GetDynamicObject方法返回的对象一无所知,你也可以像如下那样进行代码的调用,编译器不会报错:   dynamic dynamicObject = GetDynamicObject(); Console.WriteLine(d

测试工程师-Cef3 CefCookieManager的正确用法?

问题描述 Cef3 CefCookieManager的正确用法? 研究过CEF3的大牛们?怎样使用CefCookieManager::CreateManager来为浏览器实例分配单独的CookieManager? 我本来以为很简单: 首先生成一个CefRequestContextHandler,重载GetCookieManager,象这样: class WXRequestContextHandler :public CefRequestContextHandler { public: WXReq

iOS 中导航栏的 hidesBottomBarWhenPushed 正确用法

iOS:hidesBottomBarWhenPushed的正确用法 OCT 12 今天说的是在TabBar嵌套Nav时,进行Push的时候隐藏TabBar的问题. 之前项目也需要这么做,那时候iOS7还没出,也是各种搜罗,后来的解决方法是当push操作的时候自己隐藏Tabbar,push过去视图拉伸适应屏幕,再pop回来的时候接再显示Tabbar,过程复杂还需要自己写动画,最终效果也不是很理想. 前两天公司APP上架,当时没有适配iOS7,在XCode4.6上开发编译并发布,居然在iOS7下跑起

spring分布式事物-atomikos mssql报错Error in recovery以及找不到存储过程

问题描述 atomikos mssql报错Error in recovery以及找不到存储过程 如题,我使用atomikos做spring分布式事物,同时支持Oracle.MySQL和MSSQL三种数据源.目前Oracle和MySQL都能调通,在测试MSSQL的过程中,一直报错. 错误如下: 2015-06-03 14:08:45,911 WARN com.atomikos.datasource.xa.XATransactionalResource.logWarning:24 - Error i

JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax_javascript技巧

关于本文 本文主要总结网站编写以来在传递 JSON 数据方面遇到的一些问题以及目前采用的解决方案.网站数据库采用 MongoDB,后端是 Python,前端采用"半分离"形式的 Riot.js,所谓半分离,是说第一页数据是通过服务器端的模板引擎直接渲染到 HTML 中,从而避免首页两次加载的问题,而其它动态内容则采用 Ajax 加载.整个流程中数据都是通过 JSON 格式传递的,但是在不同的环节中需要采用不同的方式并遇到一些不同的问题,本文主要做记录.总结. 1. What is JS

通过第三方(如财付通)充值如何做分布式事物?

问题描述 RT, 解决方案 解决方案二:财付通这个是异步的通知,不存在事务的问题吧解决方案三:就比如我们这边财付通那边充值成功了,我们这边保存数据时候失败了,怎么办....解决方案四:引用2楼yu929927571的回复: 就比如我们这边财付通那边充值成功了,我们这边保存数据时候失败了,怎么办.... 你们保存数据失败是你们自己的事情,难道还要财付通退钱么,照这么搞法你们老板肯定要把你们都炒鱿鱼,哪有把收进来的钱退出去的道理?失败了就重试,财付通要求收到你们成功处理的通知,不然会一直给你们发通知

C# TransactionScope 分布式事物使用实例

protected void btnSave_Click(object sender, EventArgs e) { var order = new BLL.A_OrderInfo().GetModel(this.OrderId);//订单 if (order != null && IsUpOrder(order.OrderState, order.PayWay, order.PayState)) { var itemIds = Request.Form.GetValues("h

容易混淆位置的常用XHTML标签正确用法

刚接触XHTML+CSS设计网页时,很多朋友对于标签的使用没什么经验,也很随意,经常是想起什么就用什么,认为只要能实现效果就可以.但随着学习的深入和对搜索引擎优化知识的了解,发现其实XHTML标签的使用也是一门学问. 下面介绍一些初学者常用的.比较容易混淆使用位置的XHTML标签的正确使用方法,欢迎关注网页陶吧,欢迎讨论.在这里不对各标签在CSS中对应的属性及用法做详细的介绍,重点介绍在网页中的应用,希望能对大家有些帮助. 一.DIV DIV对于XHTML建站的朋友应该并不陌生,很多的网站和资料