淺析LINQ事務(wù)處理的實現(xiàn)
LINQ事務(wù)處理是什么情況?LINQ事務(wù)處理的原理是什么呢?LINQ事務(wù)處理的基本實現(xiàn)是怎么樣的呢?那么這里我們就向你詳細(xì)LINQ事務(wù)處理的基本情況,希望對你有所幫助。
LINQ事務(wù)處理依賴于TransactionScope,一個使用依賴全局變量的非OO設(shè)計模式的.NET 2.0類。
TransactionScope被用來為一組變化設(shè)置事務(wù)。不像在ADO.NET中的事務(wù)對象,TransactionScope不限于一個單獨的數(shù)據(jù)庫鏈接。它最常用的一個案例是在多臺服務(wù)器上運行一個事務(wù)。
當(dāng)一個TransactionScope對象被創(chuàng)建時,它會自動將自己注冊成線程的事務(wù)。所有的事務(wù)感知操作也將會自動地使用這個事務(wù),而不需要將事務(wù)對象傳遞給對象。事務(wù)感知對象的例子包括SQLCommand類和LINQ to SQL對象。
這種設(shè)計的一個比較嚴(yán)重的副作用是事務(wù)和操作間的連接不是那么直接。
LINQ事務(wù)處理實例
- Public Sub OperationWithTransaction()
- Using t As New Transactions.
- TransactionScope Operation1()
- t.Complete() End Using End Sub
就上面的這個例子,當(dāng)OperationWithTransaction被調(diào)用時,Operation1函數(shù)中的所有動作都和事務(wù)相關(guān)聯(lián)。就是在事務(wù)并沒有明確傳遞給方法的時候,這種情況也會發(fā)生。這就使得對Operation1的調(diào)試變得有些復(fù)雜,尤其是在堆棧跟蹤(Stack Trace)上事務(wù)范圍(transaction scope)被創(chuàng)建了多個層時。
最后需要提醒的是,在使用多線程時,一個給定的TransactionScope只能應(yīng)用在當(dāng)前線程上。
LINQ事務(wù)處理的基本情況就向你介紹到這里,希望對你了解和學(xué)習(xí)LINQ事務(wù)處理有所幫助。
【編輯推薦】