System.Transactions.TransactionScope。SqlCommand、LINQ to SQL DataContext) 自動參與,無需顯式傳遞事務物件。Public Sub OperationWithTransaction()
Using t As New Transactions.TransactionScope
Operation1() ' 內部所有 DB 動作自動納入事務
t.Complete()
End Using
End Sub
單一 TransactionScope 僅適用於建立它的執行緒。 跨執行緒共享會導致未定義行為。
| 特性 | ADO.NET (SqlTransaction) | TransactionScope |
|---|---|---|
| 範圍 | 單一連線 | 跨多連線/資源管理員 (分散式事務) |
| 傳遞方式 | 顯式傳遞事務物件 | 環境變數隱式流動 |
| 調試可見性 | 高 (程式碼可見) | 低 (堆疊隱性) |
| 多線程 | 需自行同步 | 不支援跨執行緒 |
SqlTransaction 顯式控制。TransactionScope,並注意 TransactionScopeOption.RequiresNew 隔離巢狀範圍。TransactionScope 實例。