交易會將多個工作系結在一起。 例如,假設應用程式會執行兩項工作。 首先,它會在資料庫中建立新的數據表。 接下來,它會呼叫特製化物件,以收集、格式化及將數據插入新的數據表。 這兩項工作是相關的,甚至相互依賴,因此除非您可以填入數據,否則您想要避免建立新的數據表。 在單一交易的範圍內執行這兩項工作會強制執行它們之間的連接。 如果第二個工作失敗,第一個工作會回復到建立新數據表之前的時間點。
為了確保可預測的行為,所有交易都必須具備基本的 ACID 屬性(原子性、一致性、隔離性和持久性)。 這些屬性加強了關鍵任務交易作為全有或全無命題的角色。 如需 ACID 的詳細資訊,請參閱 ACID 屬性。 總而言之,ACID 保證一組相關任務會成功或失敗作為一個整體。 在事務處理術語中,交易會認可或中止。 若要提交交易,所有參與者都必須確保資料的任何變更將是永久的。 不管系統是否當機,還是發生其他不可預見的事件,變更必須持續。 即使單一參與者無法進行這項保證,整個交易也會失敗。 交易範圍內數據的所有變更都會回復至特定設定點。
交易可以限制在單一數據資源,例如資料庫或消息佇列。 在此案例中,本機交易是由 所提供的 System.Transactions 交易管理員所管理,這會產生效能提升。 由數據資源控制,這些交易有效率且易於管理。
交易也可以跨越多個數據資源。 分散式交易使您能夠將不同系統上發生的多個不同的操作納入一個成功或失敗的完整動作。 在此案例中,交易會由位於每個系統中Microsoft分散式交易協調器 (MSDTC) 協調。
當您使用 所提供的 System.Transactions類別來開發交易式應用程式時,您不需要擔心您需要何種交易,或涉及交易管理員。 基礎結構 System.Transactions 會自動為您管理這些專案。
當您建立交易時,您可以指定套用至交易的隔離等級。 由 IsolationLevel 列舉定義的隔離等級會決定其他交易對受交易影響之資料的存取級別。
您可以使用 ADO.NET、 System.EnterpriseServices或命名空間所提供的 System.Transactions 交易程式設計模型來建立交易。 System.Transactions 所提供的功能主題討論您可以使用 命名空間撰寫交易式應用程式System.Transactions的功能。