C#中使用事务

       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().
原文地址:https://www.cnblogs.com/fhuafeng/p/1504568.html