如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
.net事务处理的实现方法HYPERLINK"http://dxz506.blog.163.com/blog/#m=0&t=1&c=fks_087064082095088069081086094095085086082065081082080074082"asp.net2010-08-0417:57:44阅读69评论0字号:大中小事务类型:1,手动事务:用开始和结束事务的显式指令(BEGINTRANSACTION和ENDTRANSACTION)控制事务边界。从一个事务边界内可以开始第二个被称为嵌套事务的事务。直到所有从属事务提交,其父事务才提交。2:自动事务:基于每个组件的声明特性集管理事务边界。事务自动流向被指示参与事务的对象,并跳过被指示在事务外部执行的对象。使用自动事务模型时无法嵌套事务。分布式事务处理(TP):分布式事务处理(TP)系统旨在协助在分布式环境中跨异类的事务识别资源的事务。手动事务和ADO.NETSQL客户端和OLEDB.NET提供程序在公共语言运行库中支持手动事务。在ADO.NET中,这两个.NET提供程序都可以用来控制事务。应使用ADO.NET连接对象Connection.BeginTransaction开始本地事务。用Command对象的Transaction属性登记该事务中的命令。使用Transaction对象根据事务组件的成功或失败而提交或回滚在数据源做的修改。登记在默认情况下是自动的,而且可以禁用。如果禁用了自动登记,您可以手动登记。在一个现有分布式事务中使用Connection.EnlistDistributedTransaction进行登记。若要执行事务,请执行下列操作:调用Connection对象的BeginTransaction方法来标记事务的开始。BeginTransaction方法返回对Transaction的引用。该引用将分配给登记在事务中的Command对象。将Transaction对象分配给要执行的Command的Transaction属性。如果通过活动的Transaction对象对Connection执行Command,但该Transaction对象尚未分配给Command的Transaction属性,则将引发异常。执行所需的命令。调用Transaction对象的Commit方法来完成事务,或调用Rollback方法来取消事务。myConnection.Open();SqlTransactionmyTrans=myConnection.BeginTransaction();SqlCommandmyCommand=myConnection.CreateCommand();myCommand.Transaction=myTrans;try{myCommand.CommandText="InsertintoRegion(RegionID,RegionDescription)VALUES(100,'Description')";myCommand.ExecuteNonQuery();myCommand.CommandText="InsertintoRegion(RegionID,RegionDescription)VALUES(101,'Description')";myCommand.ExecuteNonQuery();myTrans.Commit();Console.WriteLine("Bothrecordsarewrittentodatabase.");}catch(Exceptione){try{myTrans.Rollback();}catch(SqlExceptionex){if(myTrans.Connection!=null){Console.WriteLine("Anexceptionoftype"+ex.GetType()+"wasencounteredwhileattemptingtorollbackthetransaction.");}}分布事务:如果Connection对象确定事务是活动的,它将自动登记在现有的分布式事务中。当打开连接或从连接池中检索连接时,将发生自动事务登记。这种情况,如果在Connection打开后,如果想再将新的的操作(command)登记入事务使不可能的。此时,应禁用自动登记功能:sqlserver为在连接字符串中设置Enlist字段为false:Enlist=falseoledb中为OLEDBServices=-7此时可以使用EnlistDistributedTransaction在事务中登记ConnectionSqlConnectionnwindConn=newSqlConnection(".......;Enlist