zoukankan      html  css  js  c++  java
  • TransactionScope类使用场景和方法介绍

    在实际开发工作中,很多情况下会出现这样的事情,执行一个事件,这个事件执行插入操作后获取执行后的结果,然后调用另一接口插入数据,插入完之后,可能还要再执行其他一些操作,这些操作,是离散的,如果上面所说两步都执行了,但在之后处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我们所希望的是能够在整个这个方法定义为一个事务,要成功大家一起成功,要失败大家都失败,像这样的场景,就可以使用TransactionScope 类。

    下面请看代码:

    using (TransactionScope transaction =new TransactionScope(TransactionScopeOption.Required)) { try { IBaseMgr ibaseMgr = FacadeContainer.Get<IBaseMgr>(); ibaseMgr.Add(enterprise); ibaseMgr.Add(user, ibaseMgr.GetRoleByName("企业管理员").IID.ToString()); transaction.Complete(); returntrue; } catch (Exception ex) { throw ex; } }

    IBaseMgr 是我定义的一个接口,接口中有两个方法,一个是添加企业,一个是添加账户,需求是企业添加后要为该企业添加一个管理员, 所以可以看到这是两个离散的方法,如果添加用户失败,那么之前添加的企业信息将成为垃圾数据,但是用了TransactionScope 之后,事务管理器会 预执行代码,直至Complete()处,如果过程没有出错,这通知事务管理器去提交,如果错误这不提交,保证了整个执行过程的一致性。

  • 相关阅读:
    虚拟内存布局、内存的分工、堆与栈
    spring bean生命周期
    【iOS开发-29】解决方式:TabBar的图片不显示,仅仅显示灰色的正方形
    地图上显示div点位
    Android控件:RadioButton(单选button)
    innodb next-key lock解析
    AFNetworking2.0源代码解析
    python面向对象编程
    FlatBuffers与protobuf性能比較
    Android 混淆打包不混淆第三方jar包
  • 原文地址:https://www.cnblogs.com/zcm123/p/3118938.html
Copyright © 2011-2022 走看看