BOS-事务的使用原创
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(); }
推荐阅读