一、ADO.net事务SqlTransaction(类),继承与DbTransaction 实现的方法:Commit、Dispose(bool disposing)、Rollback()、Rollback(string transactionName)、Save(string savePointName)(回滚到指定的节点),简单、实际上和数据库事务差不多,只能在一个数据库连接使用。
二、数据库事务 和数据库事务用法差不多, sql事务是使用SQL server自身的事务,在sql脚本中实现,使用begin Tran、COMMIT Tran、ROLLBACK Tran完成事务操作。
CREATE PROCEDURE dbo.SPTransaction ( @UpdateID int, @UpdateValue nchar(50), @InsertID int, @InsertValue nchar(50) ) AS begin Tran Update Region Set RegionDescription=@UpdateValue where RegionID=@UpdateID insert into Region Values (@InsertID,@InsertValue) declare @RegionError int select @RegionError=@@error if(@RegionError=0) COMMIT Tran else ROLLBACK Tran GO三、TransactionScope事务 TransactionScope是System.Transactions.TransactionScope类,他可以使代码块成为事务性代码,能够自动提升为分布式事务。 将需要事务提交的代码块,写到TransactionScope事务下可以完成事务提交,执行到 Complete()方法时事务才提交成功,否则回滚。
using (TransactionScope ts = new TransactionScope()) { userBLL u = new userBLL(); TeacherBLL t = new TeacherBLL(); u.ADD(); t.ADD(); ts.Complete(); }以上u和t同时提交以后才可以完成事务,否则失败。
四、COM+事务 在分布式应用程序中,往往要同时操作多个数据库,使用数据库事务就不能满足业务的要求了。在COM+中,提供完整的事务处理服务。很方便处理多个数据库上的事务。 在程序中表明支持事务[ Transaction(TransactionOption.Required) ] 说明DLL需要事务支持,引入using System.EnterpriseServices 实现分布式跨库事务的时候,出现异常时 ContextUtil.SetAbort();进行事务回滚。