我正面临下一个问题。我有一段代码如下:
DoSomething(){
using (TransactionScope scope = new TransactionScope())
{
InsertSomething();
InsertSomethingElse();
InsertYetAnotherThing();
ProcessDataRelatedWithThePreviousInserts();
scope.Complete()
}
}
在ProcessDataRelatedWithThePreviousInserts中,我检查条件,如果需要,其余的工作流将重定向到其他服务器中的Message Queue。在另一台服务器中,我恢复了消息,并继续工作流程(基本上,进行一些与DoSomething方法相关的插入)。
这是理论上的,因为如果我在DoSomething方法中删除TransactionScope,我只能设法做到这一点。有没有办法完成我想做的事情,或者我需要改变交易的处理方式?
答案 0 :(得分:0)
你有没有试过
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
// ...
using (TransactionScope innerscope = new TransactionScope(TransactionScopeOption.Supress)
{
ProcessDataRelatedWithThePreviousInserts();
}
scope.Complete();
}
显式禁止调用 ProcessData相关WithThePreviousInserts()的外部事务。