在第n次插入时,TransactionScope不会回滚

时间:2012-12-17 07:02:54

标签: c# .net transactions transactionscope distributed-transactions

我有一个问题让我转身3天。 我在这个transactioscope中使用事务范围我插入5个表中的5个值。正确插入前3个表并完全忽略第4个插入并正确插入第5个值而没有任何问题。不会出现异常,也不会发生回滚。

编辑:此问题仅发生在生产服务器上,并且不会经常发生。它发生的次数很少,而且大多数时候都能正常工作而没有任何问题。

注意:在我在同一台服务器上托管另一个应用程序后,此问题开始出现。

public void InsertStuff()
{
    try
    {
        using(TransactionScope ts = new TransactionScope())
        {
            //perform insert 1
            Tablel1.Insert();

            //perform insert 2
            Tablel2.Insert();

            //perform insert 3 - 
            Tablel3.Insert();

            //perform insert 4 - No insertion occur !!!!!
            Tablel4.Insert();

            //perform insert 5 - insertion works fine!!!!!
            Tablel5.Insert();


            ts.Complete();            
        }
    }
    catch(Exception ex)
    {
        throw ex;
    }
}

2 个答案:

答案 0 :(得分:0)

如果确实发生了异常,那么事务范围应该回滚。

为什么不通过自己抛出异常,或者通过在catch中显式调用ts.Rollback()来测试你的理论。

答案 1 :(得分:0)

事务或程序流看起来没有任何问题。检查

编程的内容
Tablel4.Insert();

程序/计算机可以通过自己做一些神奇的事情。我们经常犯错但却没有注意到。我们可以建议可能性,但是你可以仔细检查你的逻辑或发布该代码段,如果想要其他人看看。

不会发生异常,因为可能存在逻辑错误,而不是某些编译或语法