在ADO.NET中使用事務保護資料的完整性(3)

來源:互聯網
上載者:User
ado|資料 事務在ADO.Net中

Ado.net 支援兩種事務模型,這在.Net Framework 文檔中作為指南有定義.事務指南手冊介紹了通常應該知道的資料庫事務, 它影響操作單個目標資料庫.一個類通過由ado.net顯示描述的事務邊界使用事務類和方法能提供事務指南.在接下來的章節中,我將把重點放在事務指南上.

自動事務也是可行的,為了使用類來參與事務來協調跨多個資料來源的改變.在這種情景下事務本身是在外層處理的,比如通過com+ 和 DTC. 需要瞭解更多自動事務的,可以參照相關自動事務.

註:當沒有在你的代碼中指定事務行為時,你應該注意資料庫事務預設行為.比如,sql Server 預設自動模式,每個事務-Sql 語句或成功或失敗.要瞭解哪種預設行為是希望得到的從你工作的資料來源中,能幫你決定你是否顯示定義事務,也可以對於你理解你的系統行為更有協助.

事務相關類總攬

Ado.net 資料提供對象通過Connection, Command, 和Transaction 類來提供事務功能. 一個典型的事務過程類似以下:

1. 開啟事務通過Connetion.BeginTransaction()

2. 通過設定Command 的Command.Transaction 屬性,在事務中加入語句或預存程序.

3. 依靠提供者,選擇使用 Transaction.Save() 或 Transaction.Begin() 來建立savepoint 或內嵌的事務來使能局部復原.

4. 提交或復原事務通過使用Transaction.Commit() 或Transaction.Rollback()

所有的資料提供者提供了同樣的基本結構來處理事務,開始串連的事務,加入指令,使用事務物件來提交或復原.

Sql Server 事務

Sql Server 資料提供對象提供事務的準系統情況見以下的類和成員:

Class
Member
Function

SqlConnection
BeginTransaction
Open a new transaction.

SqlCommand
Transaction
Enlist the command associated with the object in an open transaction.

SqlTransaction
Save
Create a savepoint to enable a partial rollback.

SqlTransaction
Rollback
Roll back a transaction.

SqlTransaction
Commit
Commit a Transaction



Sql Server 資料提供者( 對於Sql Server 來說,OLE DB provider 也是如此) 不提供在代碼中建立內嵌事務的方式, 因此內嵌事務在Sql Server並不真正的被支援.因此這兒只有一種方式來開始一個事務在SqlClient中-使用SqlConnection.BeginTransaction(). 你不能在統一個串連中開啟另外一個事務,直到先前的事務被提交或復原,因此在任何時間每個串連只有一個開啟的事務.為了使用局部復原,使用SqlTransaction.Save().

OLE DB 事務

OLE DB 資料提供者提供事務的準系統情況見以下的類和成員:

Class
Member
Function

OleDbConnection
BeginTransaction
Open a new transaction.

OleDbCommand
Transaction
Enlist the command associated with the object in an open transaction.

OleDbTransaction
Begin
Create a nested transaction, to enable a partial rollback.

OleDbTransaction
Rollback
Roll back a transaction.

OleDbTransaction
Commit
Commit a Transaction



OLE DB 資料提供者不提供任何的方法來設定savepoints, 相反的有個Begin() 方法在OleDbTransaction物件上.這允許你建立內嵌事務(根據你的資料庫)來提供類似的功能.在這種情況下你可以在單個串連中擁有多個事務.但必須記住的是顯示的調用提交和復原.

記住,.NET OLE DB資料提供者的內嵌事務依賴於你的資料庫和指定的OLE DB提供者.為了成功實施內嵌事務,其必須被你的資料庫和OLE DB 提供者都支援.

Oracle 事務

Oracle 資料提供者提供事務的準系統情況見以下的類和成員:

Class
Member
Function

OracleConnection
BeginTransaction
Open a new transaction.

OracleCommand
Transaction
Enlist the command associated with the object in an open transaction.

OracleTransaction
Rollback
Roll back a transaction.

OracleTransaction
Commit
Commit a Transaction



Oracle 資料提供者不允許你指定savepoints或內嵌事務.Savepoints 被Oracle 支援,但是你不能實施它們對於當前的oracle資料提供者版本來說.事務於oracle 來說或者復原或者提交,局部復原是不能的.





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。