事務處理事務是構建許多業務邏輯的一個重要方面
NET Framework 中的事務
在NET Framework 包含SystemTransactions這是一種新的命名空間完全專注於控制事務性行為開發人員將最常將SystemTransactions與某個執行上下文配合使用這是NET Framework 中的一種新結構執行上下文允許指定適用於包含在一個定義范圍內的所有代碼的通用信息如事務以下是應用程序如何使用該方法將一組操作組合成一個事務的示例
using SystemTransactions;
using (TransactionScope ts = new TransactionScope(Required))
{// 執行操作例如更新不同的 DBMS
tsComplete()}
位於using 塊內的所有操作將成為一個事務的一部分因為它們共享其所定義的事務執行上下文本例中的最後一行調用 TransactionScope 的 Complete 方法將導致退出該塊時請求提交該事務此方法還提供了內置的錯誤處理出現異常時會終止事務
如本例那樣為新 TransactionScope 指定 Required意味著此代碼將總是作為事務的一部分運行若其調用方的事務存在則加入之若不存在則創建一個新的如同在企業服務中一樣還可以指定其他選項包括 RequiresNewSupported 和 NotSupported
與企業服務及其前任 MTS 和 COM+ 不同SystemsTransactions 完全專注於控制事務性行為例如事務與對象的內部狀態之間不需要存在連接企業服務要求一個對象在其結束事務時被停用但 SystemsTransactions 則沒有這種需要
ADONET 中的SqlClient提供程序與新的SystemTransactions命名空間相集成從而啟用了稱為可升級事務的行為盡管Transact SQL可以用來啟動本地或分布式事務(BEGIN TRANSACTION和BEGIN DISTRIBUTED TRANSACTION)但在某些情況下(特別是在客戶端/中間層編程方面)程序員可能希望編寫可以在一個數據庫方案或多個數據庫方案中使用的組件這些方案可能包含多個SQL Server實例並且SQL Server可以自動檢測到多實例訪問並將事務從本地提升到多實例(分布式)即使在使用多個數據庫產品或多個連接的情況下這也是可能的前提是第一個數據庫(在分布式事務術語中稱為資源管理器)是SQL Server在ADONET中默認情況下啟用可升級的事務
From:http://tw.wingwit.com/Article/program/net/201311/11497.html