自动事务

原创 2004年06月23日 17:35:00

自动事务和 ASP.NET

在 ASP.NET 页中插入事务指令,您可以指示该页参与现有事务、开始新事务或永不参与事务。

下表列出并描述 ASP.NET 中可用的事务指令。

Disabled 指示 ASP.NET 将忽略事务上下文。这是默认的事务状态。
NotSupported 指示该页不在事务范围内运行。处理请求后,不管是否有活动事务,均在没有事务的情况下创建其对象上下文。
Supported 指示该页在现有事务的上下文中运行。如果没有事务,则该页在没有事务的情况下运行。
Required 该页在现有事务的上下文中运行。如果没有事务,则该页将启动一个事务。
RequiresNew 指示该页需要事务且为每个请求启动新事务。

<%@ Page Transaction="Required" %>

 

自动事务和 XML Web services 

可使用 <?XML:NAMESPACE PREFIX = MSHelp NS = "http://msdn.microsoft.com/mshelp" />WebMethodAttribute 属性类的 TransactionOption 属性声明一个自动事务。

[ WebMethod(TransactionOption=TransactionOption.RequiresNew)]
     public int DeleteAuthor(string lastName) 
     {
       String deleteCmd = "DELETE FROM authors2 where au_lname='" + lastName + "'" ;
   
         SqlConnection sqlConn = new SqlConnection("Integrated Security=SSPI;database=pubs;server=myserver");
         SqlCommand myCommand = new SqlCommand(deleteCmd,sqlConn);

         myCommand.Connection.Open();
      return myCommand.ExecuteNonQuery();
     }

自动事务中的投票 

.NET Framework 类和 ASP.NET 页可以通过投票来提交或中止它们的当前事务。默认情况下,如果代码中没有显式投票,则默认为赞成提交。但默认提交可能会延长为每个事务释放昂贵资源所用的时间,从而可能降低应用程序的性能。

显式投票还允许类或页在遇到严重错误时中止事务。

使用自动完成

System.EnterpriseServices.AutoCompleteAttribute 使参与事务的对象投票赞成在方法正常返回时完成事务。如果方法调用引发异常,则中止事务。只能将此特性应用于从 ServicedComponent 类派生的类。

[Transaction(TransactionOption.Supported)]
public class Account : ServicedComponent {
    [AutoComplete]
    public void Debit(int amount) {
        // Do some database work. Any exception thrown here aborts the transaction;
        // otherwise, transaction commits.
    }
}

使用 SetAbort 和 SetComplete

可以使用公开 SetCompleteSetAbort 方法的 System.EnterpriseServices.ContextUtil 类来显式提交或中止事务。SetComplete 指示对象投票赞成提交其工作;SetAbort 指示对象遇到了问题且投票赞成中止正在进行的事务。直到事务的根对象停用,才提交或中止事务。此外,任何参与事务的对象中有一个中止投票,都将导致整个事务失败。

if( !DoSomeWork() )
{
  //Something goes wrong.
  ContextUtil.SetAbort();
}
else
{
  //All goes well.
  ContextUtil.SetComplete();
}

声明式事务和自动代理初步认识 和 最近用到的重构

我所在的公司一直是使用这种方式 进行spring上的事务控制的 先放代码: ...
  • fengcaho0616
  • fengcaho0616
  • 2017年04月19日 10:15
  • 163

Spring事务之七(事务自动提交)

更多文章:http://zhuqiuhui.space/ 一、MySQL数据库事务自动提交     对于mysql数据库,默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事...
  • zhuqiuhui
  • zhuqiuhui
  • 2017年04月21日 00:45
  • 3889

mysql的事务的自动提交

mysql事务的自动提交     由于技术比较菜,在上一篇关于数据库储存引擎的学习中发现:为什么我们开启事务,最后在提交之前也发现数据已经进行了修改?其实是自己有点迷糊了。个人理解,数据库的事务是指...
  • libo222
  • libo222
  • 2016年09月04日 18:13
  • 1446

坑爹的Spring数据源——自动提交事务

记一次数据源的自动提交事务带来的烦恼,并通过分析找到JBoss JNDI数据源默认自动提交事务的解决方案...
  • hqshaozhu
  • hqshaozhu
  • 2015年11月10日 15:48
  • 4557

SSH 配置自动提交事务

今天在配置ssh的时候,在用到工具生成的save()方法时,相应的数据竟然没有保存到数据库。。原因是因为我的事务,没有配置好,按照网上的各种方法试了一遍,最后还是没有解决。于是我决定采用事务自动配置。...
  • MrJavaweb
  • MrJavaweb
  • 2016年06月22日 11:12
  • 1710

oracle事务处理 自动提交

提交数据有三种类型: 显式提交、隐式提交及自动提交。下面分别说明这三种类型。 1、显式提交:用COMMIT命令直接完成的提交为显式提交。其格式为:SQL>COMMIT; 2、隐式提交: 用SQL...
  • toto1297488504
  • toto1297488504
  • 2013年08月12日 14:54
  • 1303

hibernate事务没有自动提交

最近自己的项目。发现做修改操作时,项目没有报错,但是数据库数据没有修改,结果发现是自己马虎问题导致的。整合一下网络上查来的各种解决方法:session获取方式为:sessionFactory.getC...
  • chanjkf
  • chanjkf
  • 2018年01月25日 10:48
  • 59

MySQL 的异常与事务结合的使用方法。并带自动回滚!

MySQL 的异常与事务结合的使用方法。并带自动回滚!DELIMITER $$ DROP PROCEDURE IF EXISTS test_sp1 $$ CREATE PROCEDURE t...
  • samxx8
  • samxx8
  • 2015年12月02日 16:37
  • 2110

pg(hgdb)默认事务自动提交

默认情况下,AUTOCOMMIT(自动提交)是开着的,也就是说任何一个SQL语句执行完毕后,它锁做的数据修改都会被立即提交,这种情况下每个语句都是一个独立的事务,一旦执行完毕祁结果就不可撤销。如果你需...
  • lk_db
  • lk_db
  • 2017年10月10日 09:35
  • 103

有关Grails的事务

Grails事务
  • shooray
  • shooray
  • 2015年03月11日 14:18
  • 1014
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自动事务
举报原因:
原因补充:

(最多只允许输入30个字)