BOS-事务的使用原创
金蝶云社区-eris
eris
29人赞赏了该文章 1,089次浏览 未经作者许可,禁止转载编辑于2022年10月11日 17:01:13

说明

      事务是为了确保里面的所有脚本运行结果的一致,事务往往会带来阻塞,甚至死锁,如果存在嵌套或并发事务时需要特别小心。平台的每个标准操作服务都会开启事务,如果事务里面又调用其他操作,就会导致事务嵌套,下面就嵌套事务进行相关说明。

        //外围事务
         using (KDTransactionScope trans = new KDTransactionScope(TransactionScopeOption.Required))
            {
               ...
                try
                {
       //使用的是外围事务,如果发生异常,则外围事务也发生异常,即使使用try/catch吃掉异常,外围事务也处于异常状态(一般是abort状态)
       //无需担心阻塞问题,可以对相同的表进行各种操作
                    using (KDTransactionScope trans1 = new KDTransactionScope(TransactionScopeOption.Required))
                    {
                        ...
                        trans1.Complete();
                    }
//新建一个事务,外围事务发生异常不影响它,它发生异常,如果异常被吃掉不影响外围事务
//需要特别主要阻塞和死锁
                    using (KDTransactionScope trans1 = new KDTransactionScope(TransactionScopeOption.RequiresNew))
                    {
                         ...
                        trans1.Complete();
                    }
                  //屏蔽事务
                    using (KDTransactionScope trans1 = new KDTransactionScope(TransactionScopeOption.Suppress))
                    {
                       ...
                       // trans1.Complete();
                    }
                }
                catch (Exception ex)
                {
                }
                trans.Complete();
            }



赞 29