以前在程序中用到事務時,都是在存儲過程當中建立事務來對數據進行控制,其實在C#中也有事務類。html
一、DbTransaction類對數據庫訪問添加事務,它是對數據庫事務操做的基類,繼承此類的有:
System.Object
System.MarshalByRefObject
System.Data.Common.DbTransaction
System.Data.EntityClient.EntityTransaction
System.Data.Odbc.OdbcTransaction
System.Data.OleDb.OleDbTransaction
System.Data.OracleClient.OracleTransaction
System.Data.SqlClient.SqlTransactionsql
二、System.Transactions命名空間下有兩個類也能夠用來事務的操做
分別是 TransactionScope和CommittableTransaction(繼承自System.Transactions.Transaction)數據庫
在使用 System.Transactions 所提供的類開發事務應用程序時,沒必要考慮須要使用哪一種事務,也沒必要考慮所涉及的事務管理器。 System.Transactions 基礎結構會自動管理這些事宜。編程
System.Transactions 命名空間中的類所提供的基礎結構經過支持在 SQL Server、ADO.NET、消息隊列 (MSMQ) 和 Microsoft 分佈式事務協調器 (MSDTC) 中啓動的事務,使事務編程變得簡單和高效。System.Transactions 命名空間提供基於 Transaction 類的顯式編程模型和使用 TransactionScope 類的隱式編程模型,在後一種模型中,事務由該基礎結構自動管理。oracle
System.Transactions 命名空間提供了兩種用於建立事務的模型。下列主題對這兩種模型進行了介紹。分佈式
使用事務範圍實現隱式事務spa
描述 System.Transactions 命名空間如何支持使用 TransactionScope 類建立隱式事務。htm
使用 CommittableTransaction 執行顯式事務blog
描述 System.Transactions 命名空間如何支持使用 CommittableTransaction 類建立顯式事務。繼承
TransactionScope是.Net Framework 2.0滯後,新增了一個名稱空間。它的用途是爲數據庫訪問提供了一個「輕量級」[區別於:SqlTransaction]的事物。使用以前必須添加對 System.Transactions.dll 的引用。
TransactionScope 類提供了一種簡單方法,無需與事務自身進行交互,就能夠在參與事務時對代碼塊進行標記。事務範圍能夠自動選擇和管理環境事務。因爲 TransactionScope 具備簡單易用性和高效性,所以在開發事務應用程序時優先使用該類。
http://msdn.microsoft.com/zh-cn/library/system.transactions.transaction.aspx
http://msdn.microsoft.com/zh-cn/library/ms229973.aspx
http://msdn.microsoft.com/zh-cn/library/ms172152.aspx
http://www.cnblogs.com/jillzhang/archive/2008/02/20/1075057.html