在.Net framework 中 System.Transactions 簡化了事務的處理,最近做數據集成的項目,多次使用了事務處理,使用了System.Transactions ,下面我將把他的使用方法總結一下,希望對別人有幫助。
一。如何使用
System.Transactions 使用非常簡單,下面是使用的代碼
DEMO 1
首先聲明一個TransactionScope 的實例,把需要事務處理的代碼放在Using的語句塊,這段代碼封裝了連個SQL 指令,只有其中的一個執行過程中發生異常,TransactionScope 對象會自動回滾事務,代碼正常執行的話, tran.Complete()語句提交了事務。DEMO1中使用了兩個Using 語句,代碼執行完畢會自動釋放資源(比較推薦這種方式),看到了嗎,使用 System.Data.SqlClIEnt處理事務是如此的簡單,只需幾行代碼就搞定了
二。事務的設置
TransactionScopeOptions 描述 Required 如果已經存在一個事務,那麼這個事務范圍將加入已有的事務。否則,它將創建自己的事務。 RequiresNew 這個事務范圍將創建自己的事務。 Suppress 如果處於當前活動事務范圍內,那麼這個事務范圍既不會加入氛圍事務 (ambIEnt transaction),也不會創建自己的事務。當部分代碼需要留在事務外部時,可以使用該選項。
使用TransactionScopeOptions可以改變TransactionScope的默認事務類型 (默認的事務類型是Required)。
使用方法
DEMO2
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
...{
using (SqlConnection conn1 = new SqlConnection(str))
...{
SqlCommand cmd = new SqlCommand(conn1, strsql1);
cmd.ExecuteNonQuery();
}
using (SqlConnection conn2 = new SqlConnection(conn2))
...{
SqlCommand cmd = new SqlCommand(conn2, strsql2);
cmd.ExecuteNonQuery();
}
ts.Complete();
}
三。 什麼時候使用System.Transactions
第一中情況是,你的數據庫支持輕型事務,何為輕型事務MSDN上有很明確的介紹,在這裡就不多說了,也就是你的數據庫是SQL Server 2005.
第二種情況是你的事務中使用了分布式的數據庫系統。即在一個事務處理中使用了多個數據庫。使用System.Transactions也會使性能有很大的提升。
如果數據庫是SQL Server 2000,而又只連接一個數據庫的話,使用ado.Net 的事務處理更有優勢。