事物这个概念已经接触过。在旧的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时机时,才用显示事务。