日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基础才是重中之重~.net中的显式事务与隐式事务

發(fā)布時間:2025/1/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础才是重中之重~.net中的显式事务与隐式事务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?回到目錄

.net中的事務可以分為顯式的和穩(wěn)式的,顯式的就是說需要我們手動去指定事務的提交和回滾,而穩(wěn)式的是.net幫助我們進行管理的,當你的事務代碼段沒有發(fā)生異常時,它會幫助我們進行提交,反之,進行事務加滾,這也是合情合理的。

以下是MSDN中的說明:

CommittableTransaction 類為應用程序使用事務提供了一種顯式方法,而不是隱式地使用 TransactionScope 類。與 TransactionScope 類不同,應用程序編寫器需要明確調(diào)用 Commit 和 Rollback 方法以提交或中止事務。但是,只有事務的創(chuàng)建者才能提交事務。因此,通過 Clone 方法獲得的可提交事務的副本不是可提交的。

顯式事務:

創(chuàng)建 CommittableTransaction 不會自動設置環(huán)境事務(環(huán)境事務是您的代碼在其中執(zhí)行的事務)??梢酝ㄟ^調(diào)用全局 Transaction 對象的靜態(tài) Current 屬性獲取或設置環(huán)境事務。有關(guān)環(huán)境事務的更多信息,請參見 使用事務范圍實現(xiàn)隱式事務 主題的“Managing Transaction Flow using TransactionScopeOption”(使用 TransactionScopeOption 管理事務流)一節(jié)。如果未設置環(huán)境事務,資源管理器上的任何操作都不屬于該事務。您需要顯式設置或重置環(huán)境事務,以確保資源管理器在正確的事務上下文中進 行操作。

在提交 CommittableTransaction 之前,事務所涉及的所有資源仍然是鎖定的。

CommittableTransaction 對象不能被重用。一經(jīng)提交或回滾,就不能在事務中再次使用它或?qū)⑺O置為當前環(huán)境事務上下文。

穩(wěn)式事務:

在通過 new 語句實例化 TransactionScope 時,事務管理器將確定要參與哪個事務。一經(jīng)確定,此范圍將始終參與該事務。此決策基于兩個因素:是否存在環(huán)境事務以及構(gòu)造函數(shù)中 TransactionScopeOption 參數(shù)的值。環(huán)境事務是在其中執(zhí)行您的代碼的事務。通過調(diào)用 Transaction 類的 Current 靜態(tài)屬性可獲取對環(huán)境事務的引用。有關(guān)如何使用此參數(shù)的更多信息,請參見 使用事務范圍實現(xiàn)隱式事務 主題的“事務流管理”一節(jié)。

如果在事務范圍中(即從初始化 TransactionScope 對象到調(diào)用其 Dispose 方法之間)未發(fā)生異常,則允許該范圍所參與的事務繼續(xù)。如果事務范圍中的確發(fā)生了異常,它所參與的事務將回滾。

當應用程序完成它要在一個事務中執(zhí)行的所有工作以后,您應當只調(diào)用 Complete 方法一次,以通知事務管理器可以接受提交事務。未能調(diào)用此方法將中止該事務

對 Dispose 方法的調(diào)用標志著該事務范圍的結(jié)束。在調(diào)用此方法之后發(fā)生的異常不會影響該事務。

如果在范圍中修改 Current 的值,則會在調(diào)用 Dispose 時引發(fā)異常。但是,在該范圍結(jié)束時,先前的值將被還原。此外,如果在創(chuàng)建事務的事務范圍內(nèi)對 Current 調(diào)用 Dispose,則該事務將在相應范圍末尾處中止。

建立使用事務的格式為:

1 using (TransactionScope scope = new TransactionScope()) 2 { 3 try 4 { 5 //代碼段 6 scope.Complete(); 7 } 8 catch(exception) 9 { 10 throw; 11 } 12 finally 13 { 14 scope.Dispose();//手動釋放事務 15 } 16 } 17 }

感謝您的閱讀。

?回到目錄

總結(jié)

以上是生活随笔為你收集整理的基础才是重中之重~.net中的显式事务与隐式事务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。