TransactionScope與SQL 中的事務

TransactionScope是.Net Framework 2.0滯後,新增了一個名稱空間。它的用途是爲數據庫訪問提供了一個“輕量級”[區別於:SqlTransaction]的事務。使用之前必須添加對 System.Transactions.dll 的引用。

下列代碼就是一個正在創建的事務,這個事務自身還封裝了多個數據庫查詢。只要任意一個 SqlCommand 對象引發異常,程序流控制就會跳出 TransactionScope 的 using 語句塊,隨後,TransactionScope 將自行釋放並回滾該事務。由於這段代碼使用了 using 語句,所以 SqlConnection 對象和 TransactionScope 對象都將被自動調用Dispose()釋放。由此可見,只需添加很少的幾行代碼,您就可以構建出一個事務模型,這個模型可以對異常進行處理,執行結束後會 自行清理,此外,它還可以對命令的提交或回滾進行管理。

https://www.xuebuyuan.com/626758.html
https://blog.csdn.net/tonysong111/article/details/45510933

  1. TransactionScope Timeout問題
    C#代碼中直接使用 而不顯示聲明超時時間(默認是60s) 則當Scope中的操作時間查過則會提示timeout 造成事務回滾
    using (TransactionScope ts = new TransactionScope())
    {

    ts.Complete();
    }
    可根據情況做如下更改:顯示申明timeout時間,三個參數分別爲 時 分 秒
    using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required,new TimeSpan(0,5,0))) {

    ts.Complete();
    }

2.TransactionScope 處理並問題
如果使用TransactionScope出現了頻繁併發問題 則建議將事務寫在SQL語句中。
https://www.xuebuyuan.com/626758.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章