2013-04-25 66 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