Dar*_*key 3 c# transactionscope
我们认为我们理解transactioncope和nesting(transactionscope.requires) - 即
------------------------------------------------------- inner | outer | ------------------------------------------------------- commit | rollback | no changes are committed commit | commit | all changes are committed rollback | rollback | no changes are committed rollback | commit | ---- doesn't work ----
但是,我想知道,有没有办法创建一个transactioncope,一个嵌套的事务管理器,一个依赖事务,一个自定义事务或其他什么,其中回滚提交方案也有效? -
也就是说,你在库函数中有一些东西,无论出于什么原因都有自己的事务,它存在于父事务之下.如果内部成功,那么外部事务可以访问任何更改,但如果内部回滚,外部事务仍然处于完全可用状态,并且完全不受内部事务的影响,就好像它从未被调用过一样?
不,我相信你在考虑这个错误.它只是一个单独的事务,它只是嵌套允许感兴趣的代码块在事务成功时投票(不必传递事务对象),而不是你创建嵌套事务.这就是为什么transactioncope上的方法被称为Complete而不是Commit.
编辑以解决OP的评论
为了得到你想要的东西,我认为你必须创建两个TS对象,第二个用RequiresNew然后根据需要完成/回滚.我不知道第一笔交易是否会看到第二笔交易的变化,你必须自己试验一下,看看TS在这里是否有帮助.
我明白你要做什么,我并不是说你尝试它是错的; 如果那是您的用例所需要的那么它就是它所需要的.
但是我不相信TS是针对这个用例而设计的,我认为引用嵌套事务的文档是不幸的,因为它不是通常讨论的非嵌套事务(例如在TSQL中).
TS是为更常见的用例而设计的,其中组件A和B都进行事务性工作,A使用B作为其工作的一部分,但B也可以独立使用.TS允许B始终是事务性的,无论是独立使用还是作为A工作的一部分,并且启动事务或重用A(因为A是UoW)而不必传递事务对象.
| 归档时间: |
|
| 查看次数: |
2253 次 |
| 最近记录: |