TransactionScope提交更新而不调用.Complete()但不插入

时间:2013-01-03 16:41:22

标签: c# .net transactions

我有一个围绕某些功能的transacationScope。这些函数分别执行插入或更新的数据库调用。

 using (var ts = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
            {
                IsolationLevel =
                    IsolationLevel.Serializable,
                Timeout = new TimeSpan(0, 0, 15, 0)
            }))
            {
                    DoStuff(arg!, arg2);
                    ts.Complete(); //This had to be added to commit the changes for inserts (updates worked), otherwise data was being rolled back
            }

ts.Complete();插入和更新提交到数据库,而不仅仅是更新。有人可以解释一下原因吗?

1 个答案:

答案 0 :(得分:4)

这表明您的更新不属于交易的一部分。这可能意味着:

  • 更新是在启动事务范围
  • 之前已存在的连接上完成的
  • 有一个明确的嵌套新事务或无事务
  • 独角兽

确认:没有完成,交易中没有任何内容提交