2013-04-25 43 views
10

我遇到这种怪异的行为,其中事务都只是承诺之前不提交事务的using退出,而不是呼吁scope.Complete();的TransactionScope完成()退出使用声明

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

时当如何提交在退出using声明之前的交易?

+1

可提交事务是唯一提供提交或回滚选项的事务http://msdn.microsoft.com/en-us/library/system.transactions.committabletransaction.aspx – Sankara 2013-04-25 12:15:12

回答

10

documentation

经理发生在末使用声明如果TransactionScope的对象创建事务的资源之间提交的实际工作。

因此,它看起来并不像在使用语句结束之前真正提交事务。

+1

主要原因是它可能嵌套在内部所以你所说的是“我在这里的工作看起来不错”,但如果它是一个更大的操作的一部分,以后的失败可能仍然想要回滚。 – 2016-07-15 19:55:00