快速业务通道

ASP.NET 2.0数据教程之六十三:在事务里对数据库修改进行封装

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
如:Microsoft SQL Server database, 或Oracle database,甚至 Web service.本教程我们使用ADO.NET技术而非TransactionScope class类,是因 为ADO.NET指定数据库事务更详细,且在很多情况下占用资源更少.此外,在某些 情况下,TransactionScope class类要用到Microsoft Distributed Transaction Coordinator (MSDTC),围绕MSDTC的配置、执行和性能问题是比较专业、高级的 问题稍微超出了本教程的范围.

在ADO.NET里,通过调用SqlConnection class类的BeginTransaction method方法启动事务, 该方法返回一个 SqlTransaction object对象.将构成事务的数据操作命令放在try...catch区域, 如果在try区域的某个命令出错的话,程序将转到catch区域,在此,通过 SqlTransaction object对象的Rollback method方法执行事务回滚。如果所有的 命令执行成功,将调用位于try区域底部的SqlTransaction object对象的Commit method方法来提交事务.下面的代码片段揭示了该模式。要想看在ADO.NET里使用 事务的更多例子,请参阅文章《Maintaining Database Consistency with Transactions》(http://aspnet.4guysfromrolla.com/articles/072705- 1.aspx).

// Create the SqlTransaction object
SqlTransaction myTransaction = SqlConnectionObject.BeginTransaction ();

try
{
  /*
   * ... Perform the database transaction’s data modification statements...
   */

  // If we reach here, no errors, so commit the transaction
  myTransaction.Commit();
}
catch
{
  // If we reach here, there was an error, so rollback the transaction
  myTransaction.Rollback();

  throw;
}

默认情况下,强类型数据集(Typed DataSet)里的 TableAdapters并不使用事务。为此,我们要对TableAdapter classes类进行扩展 ,以包含额外的方法以使用上述模式来执行事务。在第二步,我们看如何使用一 个partial classes类来添加这些方法.

第一步:创建批处理数据的页面

在我们考察如何扩展数据访问层DAL以支持数据库事务之前,让我们花点 时间来创建一些ASP.NET web页面,我们在本章及后面三章将用到它们.

添 加一个名为BatchData的新文件夹,再添加如下的 ASP.NET页面, 务必套用 Site.master模板 页.

Default.aspx

Transactions.aspx

BatchUpdate.aspx

BatchDelete.aspx

BatchInsert.aspx

ASP.NET 2.0数据教程之六十三:在事务里对数据库修改进行封装

图1:添加相关的页面

就像其它文件夹里的Default.aspx页面一 样,用SectionLevelTutorialListing.ascx用户控件来列出本部分的章节。将其 从解决资源管理器里拖到Default.aspx页面.

ASP.NET 2.0数据教程之六十三:在事务里对数据库修改进行封装

图2:将SectionLevelTutorialListing.ascx用户控件添加到 Default.aspx页面

最后添加如下代码到Web.sitemap文件,具体的,将其 添加到“Customizing the Site Map” <siteMapNode>后 面:

<siteMapNode title="Wo***ng with Batched Data"
  url="~/BatchData/Default.aspx"
   description="Learn how to perform batch operations as opposed to
         per-row operations.">

   <siteMapNode title="Adding Support for Transactions"
    url="~/BatchData/Transactions.aspx"
     description="See how to extend the Data Access Layer to support
           database transactions." />
   <siteMapNode title="Batch Updating"
     url="~/BatchData/BatchUpdate.aspx"
     description="Build a batch updating interface, where each row in a
           

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号