2017-03-23 25 views
0

我已經在Web API應用程序中實現了事務作用域。當我必須全部提交或全部回滾時,它工作正常。但有時在調試時,如果我在交易完成之前停止服務,那麼交易就會被鎖定。該表仍然顯示爲鎖定狀態,即使在關閉視覺工作室之後,該特定會話仍保留在數據庫中。這種情況有時會發生,而且這個部分事務不會被回滾。我還爲事務處理器設置了超時時間。問題仍在發生。無論如何,在服務停止之後立即中止表操作?即使在停止之後,ADO .NET事務作用域鎖定事務

回答

0

您是否需要使用TransactionScope?如果沒有,您可以使用與連接相關的SqlTransaction進行調查。

Details

如果客戶端的網絡連接到數據庫 引擎實例被斷開,連接任何未完成的事務都 退時網絡通知突破的實例。如果 客戶端應用程序失敗,或者如果客戶端計算機出現故障或者重新啓動 ,則這也會中斷連接,並且 數據庫引擎實例會在網絡通知中斷時回滾所有未完成的連接。如果客戶端註銷 應用程序,則任何未完成的事務都會回滾。

using (SqlConnection cn = new SqlConnection("YOUR CONNECTION")) 
{ 
    cn.Open(); 
    using (SqlTransaction tr = cn.BeginTransaction()) 
    { 
     // your transactional code 
     tr.Commit(); 
    } 
}