ASP.NET 2.0数据教程之六十三:在事务里对数据库修改进行封装
; private SqlTransaction Transaction { get { return this._transaction; } set { this._transaction = value; } } public void BeginTransaction() { // Open the connection, if needed if (this.Connection.State != ConnectionState.Open) this.Connection.Open(); // Create the transaction and assign it to the Transaction property this.Transaction = this.Connection.BeginTransaction(); // Attach the transaction to the Adapters foreach (SqlCommand command in this.CommandCollection) { command.Transaction = this.Transaction; } this.Adapter.InsertCommand.Transaction = this.Transaction; this.Adapter.UpdateCommand.Transaction = this.Transaction; this.Adapter.DeleteCommand.Transaction = this.Transaction; } public void CommitTransaction() { // Commit the transaction this.Transaction.Commit(); // Close the connection this.Connection.Close(); } public void RollbackTransaction() { // Rollback the transaction this.Transaction.Rollback(); // Close the connection this.Connection.Close(); } } } 类声明里的关键字partial向编译器表明代码里添 加的成员(members)是添加到命名空间NorthwindTableAdapters里的 ProductsTableAdapter class类.我们注意到在文件的顶部有一个using System.Data.SqlClient声明,这是因为TableAdapter被设置为使用SqlClient provider,在其内部使用一个SqlDataAdapter object对象来向数据库发出命令. 因此,我们需要使用SqlTransaction class类来启动事务,然后提交或回滚事务. 如果没有使用Microsoft SQL Server数据库的话,你需要调用恰当的 provider. 这些方法被标记为public,我们可以在ProductsTableAdapter 里,或数据访问层DAL的其它类,甚至是其它层比如业务逻辑层BLL来调用这些 法. BeginTransaction()方法打开了TableAdapter的内部的 SqlConnection(如果需要的话), 开启事务并赋值给Transaction属性,并将事务 分配(attache)给SqlDataAdapter的SqlCommand objects对 象.CommitTransaction()和 RollbackTransaction()方法在关闭内部的 Connection object对象前分别调用Transaction object对象的Commit 和 Rollback方法. 添加上述代码后,我们将在ProductsDataTable 或业务逻 辑层BLL里添加方法以执行一系列的置于事务之下的命令. 下面的代码在Batch Update pattern模式里使用一个事务来更新一个ProductsDataTable instance实 例.它调用BeginTransaction method方法来启动一个事务,然后用一个 try...catch模块来发布数据更改命令.如果调用Adapter object对象的Update方 法出现异常,那么将转到catch区域,对事务进行回滚.记得执行Batch Update pattern模式的Update方法将遍历ProductsDataTable里的所有行(rows),执行相 应的InsertCommand, UpdateCommand, 和DeleteCommands命令.如果这些命令中的 其中一个出现异常,事务将回滚,撤销在事务里的所做的更改.如果Update命令全 部执行无异常,那么提交事务.
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |