原創(chuàng)|其它|編輯:郝浩|2009-07-08 13:51:19.000|閱讀 424 次
概述:LINQ中的事務(wù)依賴于TransactionScope,一個(gè)使用依賴全局變量的非OO設(shè)計(jì)模式的.NET 2.0類。不像在ADO.NET中的事務(wù)對(duì)象,TransactionScope不限于一個(gè)單獨(dú)的數(shù)據(jù)庫鏈接。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
LINQ中的事務(wù)依賴于TransactionScope,一個(gè)使用依賴全局變量的非OO設(shè)計(jì)模式的.NET 2.0類。
TransactionScope被用來為一組變化設(shè)置事務(wù)。不像在ADO.NET中的事務(wù)對(duì)象,TransactionScope不限于一個(gè)單獨(dú)的數(shù)據(jù)庫鏈接。它最常用的一個(gè)案例是在多臺(tái)服務(wù)器上運(yùn)行一個(gè)事務(wù)。
當(dāng)一個(gè)TransactionScope對(duì)象被創(chuàng)建時(shí),它會(huì)自動(dòng)將自己注冊(cè)成線程的事務(wù)。所有的事務(wù)感知操作也將會(huì)自動(dòng)地使用這個(gè)事務(wù),而不需要將事務(wù)對(duì)象傳遞給對(duì)象。事務(wù)感知對(duì)象的例子包括SQLCommand類和LINQ to SQL對(duì)象。
這種設(shè)計(jì)的一個(gè)比較嚴(yán)重的副作用是事務(wù)和操作間的連接不是那么直接。
Public Sub OperationWithTransaction() Using t As New Transactions.TransactionScope Operation1() t.Complete() End Using End Sub
就上面的這個(gè)例子,當(dāng)OperationWithTransaction被調(diào)用時(shí),Operation1函數(shù)中的所有動(dòng)作都和事務(wù)相關(guān)聯(lián)。就是在事務(wù)并沒有明確傳遞給方法的時(shí)候,這種情況也會(huì)發(fā)生。這就使得對(duì)Operation1的調(diào)試變得有些復(fù)雜,尤其是在堆棧跟蹤(Stack Trace)上事務(wù)范圍(transaction scope)被創(chuàng)建了多個(gè)層時(shí)。
最后需要提醒的是,在使用多線程時(shí),一個(gè)給定的TransactionScope只能應(yīng)用在當(dāng)前線程上。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:IT專家網(wǎng)論壇