原創|其它|編輯:郝浩|2009-07-08 13:51:19.000|閱讀 424 次
概述:LINQ中的事務依賴于TransactionScope,一個使用依賴全局變量的非OO設計模式的.NET 2.0類。不像在ADO.NET中的事務對象,TransactionScope不限于一個單獨的數據庫鏈接。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
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只能應用在當前線程上。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:IT專家網論壇