之前在程序中用到事务时,都是在存储过程中创建事务来对数据进行控制,其实在C#中也有事务类。
1、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.SqlTransaction
2、System.Transactions命名空间下有两个类也可以用来事务的操作
分别是 TransactionScope和CommittableTransaction(继承自System.Transactions.Transaction)
在使用 System.Transactions 所提供的类开发事务应用程序时,不必考虑需要使用哪种事务,也不必考虑所涉及的事务管理器。 System.Transactions 基础结构会自动管理这些事宜。
System.Transactions 命名空间中的类所提供的基础结构通过支持在 SQL Server、ADO.NET、消息队列 (MSMQ) 和 Microsoft 分布式事务协调器 (MSDTC) 中启动的事务,使事务编程变得简单和高效。System.Transactions 命名空间提供基于 Transaction 类的显式编程模型和使用 TransactionScope 类的隐式编程模型,在后一种模型中,事务由该基础结构自动管理。
创建事务
System.Transactions 命名空间提供了两种用于创建事务的模型。下列主题对这两种模型进行了介绍。
描述 System.Transactions 命名空间如何支持使用 TransactionScope 类创建隐式事务。
使用 CommittableTransaction 执行显式事务
描述 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