• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中使用事务

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

       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>

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
box unboxing(装箱 拆箱) C#编程指南发布时间:2022-07-10
下一篇:
c#XML序列化与反序列化发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap