0

我有一个问题让我转了 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;
    }
}
4

2 回答 2

0

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

Tablel4.Insert();

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

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

于 2012-12-17T09:06:10.783 回答
0

如果确实发生异常,则事务范围应回滚。

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

于 2012-12-17T07:20:29.660 回答