Ado.net支持两种事务模型,这在.Net Framework文档中作为指南有定义.事务指南手册介绍了通常应该知道的数据库事务, 它影响操作单个目标数据库.一个类通过由ado.net显示描述的事务边界使用事务类和方法能提供事务指南.在接下来的章节中,我将把重点放在事务指南上. 软件
可以使用 Connection 和 Transaction 对象启动、提交和回滚事务。下面的步骤用于执行事务。若要执行事务,请执行下列操作: 调用 Connection 对象的 BeginTransaction 方法来标记事务的开始。BeginTransaction 方法返回对 Transaction 的引用。该引用将分配给登记在事务中的 Command 对象。 将 Transaction 对象分配给要执行的 Command 的 Transaction 属性。如果通过活动的 Transaction 对象对 Connection 执行Command,但该 Transaction 对象尚未分配给 Command 的 Transaction 属性,则将引发异常。 执行所需的命令。
自动事务也是可行的,为了使用类来参与事务来协调跨多个数据源的改变.在这种情景下事务本身是在外层处理的,比如通过com 和 DTC. 需要了解更多自动事务的,可以参照相关自动事务. =msonormalstyle="margin:6pt0cm12pt;line-height:18pt;text-align:left;mso-pagination:widow-orphan"align=left>
注:当没有在你的代码中指定事务行为时,你应该注意数据库事务默认行为.比如,SQLServer 默认自动模式,每个事务-Sql 语句或成功或失败.要了解哪种默认行为是希望得到的从你工作的数据源中,能帮你决定你是否显示定义事务,也可以对于你理解你的系统行为更有帮助. =msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>
=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>
事务相关类总揽 =msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-outline-level:3"align=left>
Ado.net数据提供对象通过Connection,Command,和Transaction类来提供事务功能. 一个典型的事务过程类似以下: =msonormalstyle="margin:6pt0cm12pt;line-height:18pt;text-align:left;mso-pagination:widow-orphan"align=left>
1. 打开事务通过Connetion.BeginTransaction() =msonormalstyle="margin:0cm0cm8.4pt12.5pt;text-indent:-18pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-list:l0level1lfo1;tab-stops:list12.5pt"align=left>
2. 通过设置Command的Command.Transaction属性,在事务中加入语句或存储过程. =msonormalstyle="margin:0cm0cm8.4pt12.5pt;text-indent:-18pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-list:l0level1lfo1;tab-stops:list12.5pt"align=left>
3. 依靠提供者,选择使用 Transaction.Save()或 Transaction.Begin()来创建savepoint或内嵌的事务来使能局部回滚. =msonormalstyle="margin:0cm0cm8.4pt12.5pt;text-indent:-18pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-list:l0level1lfo1;tab-stops:list12.5pt"align=left>=msonormalstyle="margin:0cm0cm8.4pt12.5pt;text-indent:-18pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-list:l0level1lfo1;tab-stops:list12.5pt"align=left>
4. 提交或回滚事务通过使用Transaction.Commit()或Transaction.Rollback() =msonormalstyle="margin:0cm0cm8.4pt12.5pt;text-indent:-18pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-list:l0level1lfo1;tab-stops:list12.5pt"align=left>
所有的数据提供者提供了同样的基本结构来处理事务,开始连接的事务,加入指令,使用事务物件来提交或回滚.=msonormalstyle="margin:0cm0cm8.4pt12.5pt;text-indent:-18pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-list:l0level1lfo1;tab-stops:list12.5pt"align=left>
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 =msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>
SqlServer数据提供者( 对于SqlServer来说,OLEDBprovider也是如此) 不提供在代码中创建内嵌事务的方式, 因此内嵌事务在SqlServer并不真正的被支持.因此这儿只有一种方式来开始一个事务在SqlClient中-使用SqlConnection.BeginTransaction().你不能在统一个连接中打开另外一个事务,直到先前的事务被提交或回滚,因此在任何时间每个连接只有一个打开的事务.为了使用局部回滚,使用SqlTransaction.Save().=msonormalstyle="margin:6pt0cm12pt;line-height:18pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:0cm0cm0pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:6pt0cm12pt;line-height:18pt;text-align:left;mso-pagination:widow-orphan"align=left>=msonormalstyle="margin:6pt0cm12pt;line-height:18pt;text-align:left;mso-pagination:widow-orphan"align=left>
|
请发表评论