假设要Insert1个用户和该用户对应角色,而这2个Insert方法已经封装到2个dll中了,现在要在这个2个方法中实现事务,代码很简单,如下(需先添加对System.Transactions程序集的引用)

 1public void Insert(string UserName,ArrayList alRoles)
 2{
 3using (TransactionScope _ts = new TransactionScope())
 4{
 5     //插入用户
 6      new user().Insert(UserName);
 7
 8     //  插入角色
 9       new Role().Insert(UserName,alRoles);
10
11      _ts.Complete();
12}
13}

异步提交事务的代码也很简单:

 1        public void Work()
 2        {
 3            Transaction _old = Transaction.Current;
 4            CommittableTransaction _newCommit = new CommittableTransaction();
 5            Transaction.Current = _newCommit;
 6
 7            try
 8            {
 9                _newCommit.BeginCommit(OnCommit, null);
10            }
11            finally
12            {
13                Transaction.Current = _old;
14            }
15        }
16        void OnCommit(IAsyncResult asy)
17        {
18            CommittableTransaction _commit;
19            _commit = asy as CommittableTransaction;
20
21            try
22            {
23                using (_commit)
24                {
25                    SqlConnection _cnn = new SqlConnection("");
26                    SqlCommand _cmd = new SqlCommand();
27
28
29                    _cnn.Open();
30
31                    _cnn.EnlistTransaction(_commit);    //  利用事务
32
33                    _cmd.Connection = _cnn;
34
35                    _cmd.CommandText = ".";
36                    _cmd.ExecuteNonQuery();
37
38                    _cmd.CommandText = "";
39                    _cmd.ExecuteNonQuery();
40
41                    _commit.EndCommit(asy);
42
43                    _cnn.Close();
44                }
45            }
46            catch (Exception e)
47            {
48
49            }
50        }

上面我们用TransactionScope和CommittableTransaction。
TransactionScope是隐示的,是由系统自动管理的,所以它没有什么RollBack方法。
CommittableTransaction是显示的,它有commit和RollBack方法。
------------------------------------------
以上都是个人的看法和体会,如有不妥处,还请大家多多指点,谢谢!

转载于:https://www.cnblogs.com/BearsTaR/archive/2006/04/17/Transactions.html

在组件之间实现事务和异步提交事务(NET2.0)相关推荐

  1. Vue2 组件之间传值

    组件件的传值有点复杂,我在这里记录一下哈 Vue2.0 传值方式: 在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来.这时必然会产生一些疑问和需求?比如一个 ...

  2. vue中组件之间传值的六种方式(完整版)

    前言   组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示,A 和 B.B 和 C.B ...

  3. Vue中组件之间8中通信方式

    vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就 ...

  4. vue中子组件和子组件之间怎么通信_Vue组件间通信6种方式

    摘要: 总有一款合适的通信方式. Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用 ...

  5. vue变量传值_vue组件与组件之间传值

    目录 一.父组件向子组件传值 二.子组件向父组件传值 三.兄弟组件之间的传值 如上图所示,2是1的子组件,1是3的父组件,2和3是兄弟组件 一.父组件向子组件传值: html代码: <div i ...

  6. vue中子组件和子组件之间怎么通信_vue.js组件之间如何通信?

    vue.js组件之间如何通信?下面本篇文章就来给大家介绍一下Vue.js组件间通信方式.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 平时在使用Vue框架的业务开发中,组件不仅仅要 ...

  7. React 组件之间传递参数

    其实react组件之间传递参数是比较简单的,但是没有具体的使用过,组件之间传递参数是比较常见的事情,所以记录一下,防止以后自己在网上胡乱的翻找 最近做了一个商品的列表页面,我想通过点击修改能够实现商品 ...

  8. Vue父组件和子组件之间传递数据

    Vue父组件和子组件之间传递数据 klmhly 已关注 2018.05.19 19:56* 字数 367 阅读 23评论 0喜欢 0 一.概念解析 挂载点: Vue实例的el属性对应的id,vue只会 ...

  9. Android--Otto事件总线 -- 组件之间通讯框架使用 --模式解析

    前言:Otto事件总线 -- 组件之间通讯框架 对于之前的情况activity之间或者fragment之间等跳转传值一般都是用bundle.intent等,从activityA --- activit ...

最新文章

  1. NSString类详解
  2. Framebuffer的配置及应用——先转载留着,以后一定要弄懂
  3. python添加系统环境win7_python环境配置(基于win7 x64)
  4. python字典的遍历方法_遍历python字典几种方法
  5. 《leetcode》valid-sudoku
  6. clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘
  7. 通俗易懂,先来认识一下Vuex
  8. 计算机网络实训室建设设备,计算机网络技术综合实训室建设方案.doc
  9. VirtualBox 安装 CentOS 7.6 操作记录
  10. 4 个拥有绝佳命令行界面的终端程序
  11. C++编写程序:输入三角形的三边,判断三角形的类型。
  12. 李开复谈软件外包及软件安全(一)
  13. GNS3 使用错误 ( Dynamips error when running command 'nio create_udp )
  14. asm source code note 1.7_switch case分支的实现
  15. 高拍仪、浏览器获取获取多摄像头,切换摄像头
  16. NeurIPS十年高引学者TOP100榜单发布!这些大牛值得膜拜!
  17. Android8.0快捷方式之Shortcuts
  18. 【Python】已知一张图片中的框图坐标,切割出目标框图(单个)
  19. 关于五笔字型学习五笔难拆汉字学习总结
  20. 嵌入式linux驱动-LCD液晶屏驱动

热门文章

  1. Oracle Drop表并未直接删除 drop table xx purge
  2. substring,substr,和slice的区别详解。
  3. 推荐一些不错的开源免费易上手的web前端框架
  4. Linux的profile与bashrc的分析
  5. 根据IP地址,子网掩码计算主机所在网络的网络地址和广播地址
  6. vue ...mapMutations 的第一个参数默认为 数据对象state
  7. Jquery 打开新页面
  8. AVPlayer播放视频
  9. 2016,成为更好的自己
  10. Cmake中的find_package功能