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

转载于:https://www.cnblogs.com/Nick-Ni/archive/2011/09/01/2162072.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值