.net事务类型和使用

16 篇文章 0 订阅
最近面试一家企业,问到了.net有几种事务,直接蒙圈,我一直用的就是sql里面的事务,其他都没接触过,回来赶紧百度,在网上搜了好多,众说纷纭,有说两个的(数据库事务,企业事务),有说三个的、四个的,最后想想,可能根据各自的技术架构也会分出不同的事务,因此这个问题没有固定的说法,根据自己经验去理解事务。下面我摘录了几个常用的事务,由于项目中都会遇到,所以我觉得当前我了解的.net事务有四类:

一、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();进行事务回滚。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值