日韩av无码中文字幕,国产午夜亚洲精品国产成人小说,成人影院午夜男女爽爽爽,欧美 亚洲 中文 国产 综合

首頁(yè) 熱點(diǎn) 要聞 國(guó)內(nèi) 產(chǎn)業(yè) 財(cái)經(jīng) 滾動(dòng) 理財(cái) 股票

transactionscope linux mysql_全球觀(guān)焦點(diǎn)

2023-06-23 15:27:29 來(lái)源 : 科技網(wǎng)


(資料圖片僅供參考)

1、分布式事務(wù)處理TransactionScope和非分布式事務(wù)處理TransactionScope它的用途是為數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)提供了一個(gè)“輕量級(jí)”區(qū)別于:SqlTransaction的事物TransactionScope這個(gè)事務(wù)自身還封裝了多個(gè)數(shù)據(jù)庫(kù)查詢(xún)。

2、只要任意一個(gè)SqlCommand對(duì)象引發(fā)異常,程序流控制就會(huì)跳出TransactionScope的using語(yǔ)句塊,隨后,TransactionScope將自行釋放并回滾該事務(wù)。

3、由于這段代碼使用了using語(yǔ)句,所以SqlConnection對(duì)象和TransactionScope對(duì)象都將被自動(dòng)調(diào)用Dispose()釋放。

4、由此可見(jiàn),只需添加很少的幾行代碼,您就可以構(gòu)建出一個(gè)事務(wù)模型,這個(gè)模型可以對(duì)異常進(jìn)行處理,執(zhí)行結(jié)束后會(huì)自行清理,此外,它還可以對(duì)命令的提交或回滾進(jìn)行管理。

5、TransactionScope在文檔中宣稱(chēng)只在“必要”情況下才提升事務(wù)級(jí)別(多數(shù)據(jù)庫(kù)時(shí)才使用分布式事務(wù),如果是同一個(gè)數(shù)據(jù)庫(kù),最好使用SqlTransaction),但是事實(shí)上不是這樣。

6、在TransactionScope內(nèi),只要你用不同的SqlConnection對(duì)象操作DB一次以上(不管你的目標(biāo)是不是同一個(gè)實(shí)例、同一個(gè)庫(kù)),都會(huì)提升事務(wù)級(jí)別到分布式事務(wù)。

7、使用分布式事務(wù)注意如下幾點(diǎn)1:確保參與事務(wù)的machine開(kāi)啟了分布式事務(wù)支持;2:如果machine開(kāi)啟了防火墻,需要設(shè)置msdtc進(jìn)程為例外;3:參與事務(wù)的machine不能跨域(如果跨域,目前微軟還沒(méi)有確切的解決方案);4:多數(shù)據(jù)庫(kù)時(shí)才使用分布式事務(wù),如果是同一個(gè)數(shù)據(jù)庫(kù),最好使用SqlTransaction.大部分都是用SqlTransaction這個(gè)類(lèi)來(lái)在程序代碼中保證事務(wù)性,但是SqlTransaction是與SQLServer數(shù)據(jù)庫(kù)相關(guān)的類(lèi),如果將這個(gè)類(lèi)用在了B層,那么就突破了三層架構(gòu)的底線(xiàn)了,如果將來(lái)?yè)Q數(shù)據(jù)庫(kù)(比如從SQLServer換到Oracle),D層和B層都得重寫(xiě),所以這樣做的局限性很大。

8、用TransactionScope,這個(gè)類(lèi)是與具體數(shù)據(jù)庫(kù)無(wú)關(guān)的類(lèi),用這個(gè)類(lèi)來(lái)保證B層的事務(wù)性十分可行。

9、示例:///////發(fā)送消息/////////格式7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName,7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName//////表示已送///publicstaticintsendMessage(stringsendUserId,stringtoUser,stringcontent,stringsendedStatus){intreceiveCount=0;TransactionOptionstransactionOption=newTransactionOptions();//設(shè)置事務(wù)隔離級(jí)別transactionOption.IsolationLevel=System.Transactions.IsolationLevel.ReadCommitted;//設(shè)置事務(wù)超時(shí)時(shí)間為60秒transactionOption.Timeout=newTimeSpan(0,0,60);using(TransactionScopescope=newTransactionScope(TransactionScopeOption.Required,transactionOption)){try{//在這里實(shí)現(xiàn)事務(wù)性工作//發(fā)送消息insertMessage(sendUserId,toUser,content,sendedStatus);//在接收信息表中插入記錄receiveCount+=insertReceiveMessage(userids[0],sendUserId,content,"0");//沒(méi)有錯(cuò)誤,提交事務(wù)scope.Complete();}catch(Exceptionex){thrownewException("發(fā)送信息異常,原因:"+ex.Message);}finally{//釋放資源scope.Dispose();}}returnreceiveCount;}。

本文到此分享完畢,希望對(duì)大家有所幫助。

關(guān)鍵詞:
相關(guān)文章

最近更新
精彩推送
空調(diào)(耗電) 2023-06-23 15:37:48
天天視訊!清水勛 2023-06-23 15:31:41
人民日?qǐng)?bào)看湖南|各地特色龍舟風(fēng)俗:湖南汨羅 守儀式 祈順?biāo)? 2023-06-23 15:28:50