使用.NET Framework 进行事务处理 | |||
作者: ZDNET www.ASPCool.com 时间:2002-5-21 17:44:09 阅读次数:4636 | |||
大多数的开发者明白事务处理和一个事务过程ACID属性的基本概念。从根本上来说,你需要确保数据库的所有修改操作都应该在一个特定的事务过程中完成;否则,它们就会发生问题。下面有两种基本的在.NET中管理数据库事务过程的方法:要么是通过一个ADO.NET Connection对象或者是通过一个COM+对象。 使用ADO.NET Connection 对象 System.Data.SQLClient 和System.Data.OleDBClient 命名空间的Connection对象都支持事务语义。例如,你可以象下面这样管理一个数据库连接的事务上下文: Dim myConnection As New SqlConnection(myConnString) myConnection.Open() Dim myCommand As New SqlCommand() Dim myTrans As SqlTransaction ' Create the transaction context myTrans = myConnection.BeginTransaction() ' Assign both transaction object and connection ' to Command object for the transaction myCommand.Connection = myConnection myCommand.Transaction = myTrans 在执行了任何数据库修改代码以后,你可以使用myTrans.Commit()提交这个事务过程或者使用myTrans.RollBack()命令回滚这些改变。 使用Connection 对象的Transaction上下文有一个严重的限制,就是它只被限制只能用于单一的数据库(也就是你打开连接的那个数据库)。当然,你不需要从你自己的程序中完成数据库操作过程,你可以使用特定数据库的存储过程,这个过程里包含事务代码。虽然这能够减少你的处理时间,但是你还是会被限制只能在一个数据库中执行事务过程。 控制多个数据库上的事务过程 为了控制多个数据库上的事务过程,你将不得不使用COM+提供的事务机制。 System.EnterpriseServieces对象提供了通过.NET内一个统一的命名空间操作COM+服务的方法。命名空间的一部分包括管理事务的能力。为了创建这种类型的事务,你必须首先创建一个对象,这个对象从System.EnterpriseServices 命名空间继承ServicedComponent 对象的功能。你的这个新的对象然后就能够创建和管理它自己的事务上下文并利用任何拥有事务资源管理器的资源。因此,你不仅可以管理发生在两个SQL Server 数据库之间的事务而且还可以是SQL Server和一个Oracle 数据库之间的事务过程。下面的代码片段演示了两个数据库之间的简单事务过程。 Imports System.Data.SqlClient Imports System.EnterpriseServices '对公共类TrxComponent使用Transaction 属性 <Transaction(TransactionOption.Required)> _ Public Class TrxComponent 'TrxComponent 必须从基类ServicedComponent 继承 Inherits ServicedComponent <AutoComplete()> Function AddData(ID as String) as String '这里的代码把数据插入到第一个数据库 '这里的代码把数据插入到第二个数据库 End Function End Class TrxComponent 通过继承ServicedComponent 组件的功能来使用COM+ 事务服务。设定了AddData 函数的AutoComplete属性以后,数据库自动的在函数结束的时候进行提交。如果底层的数据库放弃了自己那一部分的事务处理过程的话,整个事务处理过程也会被放弃。你还可以手动的通过除去AutoComplete属性并调用ContextUtil 对象的SetComplete或者SetAbort方法来控制事务的状态。 结论 数据库事务管理是开发者的一个重要工具,它能够维护一个底层数据库的一致性。.NET 对于管理单一数据库的事务过程有它自己的机制,而且在EnterpriseServices 命名空间里还有一套捆绑类能够帮助开发者使用COM+事务服务而不需要亲自动手来做。 |
使用.NET Framework 进行事务处理
最新推荐文章于 2023-06-30 14:02:56 发布