ASP.NET 3.5(C#)系列3-新一代事务机制

来源:互联网 发布:多层圆环形图js 编辑:程序博客网 时间:2024/06/04 17:56

事物这个概念已经接触过。在旧的ADO.NET事务机制中,我们需要这样做:

 

1:显示声明一个SqlTransaction对象。

2:在SqlConnection中调用SqlTransaction对象。

3:在SqlCommand中使用SqlTransaction对象。

4:结束后显示进行Commit()或者RollBack()操作。

 

这种方式的优点:简单,速度快

这种方式的缺点:只能管理单一的SqlConnection对象和单一事务管理。对多个SqlConnection和分布式事务无能为力。


在新的ASP.NET3.5事务机制中,依然沿用了2.0的System.Transaction命名空间,只是更强大。

System.Transaction中有两大类:

1.隐式事务编写

TransactionScope类;

2.显示事务编写

Transaction类;

CommittableTransaction类;

 

1)什么是隐式事务?

答:隐式事务是SQL Server为你而做的事务.隐式事务又称自动提交事务。

 

隐式事务使用TransactionScope类,编写方便简单,所以优先考虑,若不行,再用显示事务编写。

用法:首先在项目中加入System.Transactions组件(在项目中添加引用),然后在程序中引用 using System.Transactions 命名空间,这样才能访问事务相关功能。语法如下:

 

例:将刚才的例子用TransactionScope类重写

 

2)什么是显示事务?

答:显示事务是一种由你自己指定的事务.这种事务允许你自己决定哪批工作必须成功完成,否则所有部分都不完成。显示事务必须明确指出Begin(开始),Commit(确认事务结束),Rollback(错误回滚操作)。


显示事务用CommittableTransaction类,他继承自Transaction类。语法如下:

 

例:将刚才的例子用CommittableTransaction类重写

 

这个例子中Sqlconnection的EnlistTransaction方法非常重要,少了它事务将不会发生正常作用。

 

3)到底选择哪种事务机制?

答:优先选择隐式事务,因为快速方便,且并不需要进行太多的事务应用。当有特定需求,如需要自行决定Commit或Rollback时机时,才用显示事务。

原创粉丝点击