TransactionScope Complete()在退出USING语句之前不提交事务

use*_*219 10 .net c# transactionscope

我正在经历这种奇怪的行为,其中事务仅在using退出而不是在调用时提交scope.Complete();

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
       {
        scope.Complete();
           // data still doesn't show in db
       }
       // now shows in db
Run Code Online (Sandbox Code Playgroud)

如何在退出using语句之前提交事务?

NDJ*_*NDJ 10

文件:

如果TransactionScope对象创建了事务,则资源管理器之间的实际提交工作发生在End Using语句中.

因此,看起来您不能在using语句结束之前真正提交事务.

  • 主要原因是它可能嵌套在另一个范围内,所以你所说的只是"我的工作看起来很好",但如果它是较大操作的一部分,以后的失败可能仍然想要回滚它. (2认同)