.NET事务范围问题

时间:2014-11-18 02:26:10

标签: c# transactionscope

参考以下代码,说明我想要实现的目标。

ProcessRow有一些仅在其末尾的遗留代码 是确定的那一行的评估/中止,所以它抛出 如果要中止,则为ZeroInvoiceException,但如果不是,则为Completes。 所以我想要发生的是如果一排 抛出ZeroInvoiceException行被中止 否则完成。我用过的outerscope 因为如果在任何行中发生异常 我希望整个操作回滚。 这是否有意义,如果有的话 TransactionScopeOption应该是 因为我看不到这3个中的任何一个适用于此? 我想避免的是编写额外的代码 确定是否应该执行ProcessRow 所有这一行。

编辑:错过了循环抱歉。

using (TransactionScope outerscope = new TransactionScope())
{
  foreach(var row in rows)
  { 
    using (TransactionScope innerscope = new TransactionScope())
    {
        try
        {
            ProcessRow(row);
            innerscope.Complete();
        }
        catch (ZeroInvoiceException)
        {
            //DO NOTHING MOVE ON TO NEXT ROW
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
   }
    outerscope.Complete();
}

0 个答案:

没有答案