程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> ADO.NET和LINQ中古怪的事務特性

ADO.NET和LINQ中古怪的事務特性

編輯:關於.NET

LINQ中的事務 依賴於TransactionScope ,一個使用依賴全局變量的非OO設 計模式的.NET 2.0類。

TransactionScope被用來為一組變化設置事務。不像在ADO.NET中的事務對象 ,TransactionScope不限於一個單獨的數據庫鏈接。它最常用的一個案例是在多 台服務器上運行一個事務。

當一個TransactionScope對象被創建時,它會自動將自己注冊成線程的事務 。所有的事務感知操作也將會自動地使用這個事務,而不需要將事務對象傳遞給 對象。事務感知對象的例子包括SQLCommand類和LINQ to SQL對象。

這種設計的一個比較嚴重的副作用是事務和操作間的連接不是那麼直接。

Public Sub OperationWithTransaction() Using t As New Transactions.TransactionScope Operation1() t.Complete() End Using End Sub

就上面的這個例子,當OperationWithTransaction被調用時,Operation1函 數中的所有動作都和事務相關聯。就是在事務並沒 有明確傳遞給方法的時候, 這種情況也會發生。這就使得對Operation1的調試變得有些復雜,尤其是在堆棧 跟蹤(Stack Trace)上事務范圍(transaction scope)被創建了多個層時。

最後需要提醒的是,在使用多線程時,一個給定的TransactionScope只能應 用在當前線程上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved