System.Transactions 基礎結構同時提供根據 Transaction 類別的明確程式撰寫模型 (Programming Model),以及使用 TransactionScope 類別的隱含程式撰寫模型,而在此類別中,交易會自動由基礎結構來管理。
由 new 陳述式執行個體化 TransactionScope 時,交易管理員會決定要參與哪個交易,一旦決定後,範圍永遠會參與該交易。此決策是根據兩個因素而定:環境交易是否存在,以及建構函式 (Constructor) 中的 TransactionScopeOption 參數值。環境交易是在其中執行您的程式碼之交易,您可以藉由呼叫 Transaction 類別的靜態 (Static) Current 屬性,取得環境交易的參考。如需如何使用這個參數的詳細資訊,請參閱使用交易範圍實作隱含交易主題的<交易流程管理>一節。
如果沒有任何例外狀況 (Exception) 在交易範圍中發生 (也就是,在 TransactionScope 物件的初始化與呼叫其 Dispose 方法之間),則會允許範圍所參與的交易繼續。如果有例外狀況在交易範圍內發生,則會復原範圍所參與的交易。
當您的應用程式完成所有要在交易中執行的工作後,您應該只呼叫 Complete 方法一次,以通知交易管理員可以接受認可交易。無法呼叫這個方法會使交易中止。
對 Dispose 方法的呼叫會標記交易範圍的結尾,在呼叫這個方法後發生的例外狀況不太可能會影響交易。
如果您修改範圍內部的 Current 值,則當呼叫 Dispose 時會擲回例外狀況。不過,在範圍的結尾會還原先前的值。此外,如果您在建立交易的交易範圍內部,於 Current 上呼叫 Dispose,則交易會在範圍的結尾中止。