Ado.net支援兩種事務模型,這在.Net Framework文檔中作為指南有定義.事務指南手冊介紹了通常應該知道的資料庫事務, 它影響操作單個目標資料庫.一個類通過由ado.net顯示描述的事務邊界使用事務類和方法能提供事務指南.在接下來的章節中,我將把重點放在事務指南上. 軟體
可以使用 Connection 和 Transaction 對象啟動、提交和復原事務。下面的步驟用於執行事務。若要執行事務,請執行下列操作:
調用 Connection 對象的 BeginTransaction 方法來標記事務的開始。BeginTransaction 方法返回對 Transaction 的引用。該引用將分配給登記在事務中的 Command 對象。
將 Transaction 對象分配給要執行的 Command 的 Transaction 屬性。如果通過活動的 Transaction 對象對 Connection 執行Command,但該 Transaction 對象尚未分配給 Command 的 Transaction 屬性,則將引發異常。 執行所需的命令。
自動事務也是可行的,為了使用類來參與事務來協調跨多個資料來源的改變.在這種情景下事務本身是在外層處理的,比如通過com 和 DTC. 需要瞭解更多自動事務的,可以參照相關自動事務.
註:當沒有在你的代碼中指定事務行為時,你應該注意資料庫事務預設行為.比如,SQLServer 預設自動模式,每個事務-Sql 語句或成功或失敗.要瞭解哪種預設行為是希望得到的從你工作的資料來源中,能幫你決定你是否顯示定義事務,也可以對於你理解你的系統行為更有協助.
事務相關類總攬
Ado.net資料提供對象通過Connection,Command,和Transaction類來提供事務功能. 一個典型的事務過程類似以下:
1. 開啟事務通過Connetion.BeginTransaction()
2. 通過設定Command的Command.Transaction屬性,在事務中加入語句或預存程序.
3. 依靠提供者,選擇使用 Transaction.Save()或 Transaction.Begin()來建立savepoint或內嵌的事務來使能局部復原.
4. 提交或復原事務通過使用Transaction.Commit()或Transaction.Rollback()
所有的資料提供者提供了同樣的基本結構來處理事務,開始串連的事務,加入指令,使用事務物件來提交或復原.
SqlServer事務
SqlServer資料提供對象提供事務的準系統情況見以下的類和成員:
Class
Member
Function
SqlConnection
Begin Transaction
Open a new transaction.
SqlCommand
Transaction
Enlist the command associated with the object in an open transaction.
SqlTransaction
Save
Create as a vepoint to enable a partial rollback.
SqlTransaction
Rollback
Rollbackatransaction.
SqlTransaction
Commit
CommitaTransaction
http://www.mscto.com
SqlServer資料提供者( 對於SqlServer來說,OLEDBprovider也是如此) 不提供在代碼中建立內嵌事務的方式, 因此內嵌事務在SqlServer並不真正的被支援.因此這兒只有一種方式來開始一個事務在SqlClient中-使用SqlConnection.BeginTransaction().你不能在統一個串連中開啟另外一個事務,直到先前的事務被提交或復原,因此在任何時間每個串連只有一個開啟的事務.為了使用局部復原,使用SqlTransaction.Save().