事务Transaction

开发工具与关键技术: VisualStudio 2015 mvc

作者:杨泽平

撰写时间:2019、4、30

C# mvc项目中,在处理一些重要操作时需要用到事务,目的是保证操作一次性成功,事务Transaction:指的是要做的或所做的事情。

我们在开发的时候想要用事务,还得做一个步骤,那就是添加引用事务,因为在开发工具里默认是没有引用的,事务的添加引用步骤是:1、在开发工具打开的项目里找到项目解决方案资源管理器引用的地方;2、鼠标选择到引用右键打开添加引用;3、然后在引用管理器里面的程序集框架下面找到System.Transactions,勾上确定添加引用就行了。

添加完引用事务后我们就可以使用事务了,首先,事务它保证数据的正确性,要么都成功,要么都失败,如果执行的操作没有完成的话,事务所包含的所有操作都会回滚,也就是说会回到事务执行前的状态,而且这次操作的数据不会存留在数据库,对数据库没有影响,也不会影响其他的操作,总而言之他能提供一个从失败中恢复正常状态的方法。

而一般我们在mvc项目中事务重点用在一些比较多条件的,新增、修改、删除的方法里,在这里以一个新增为例子,

写好的方法如下图所示:(画红线的地方就是事务)

在这里插入图片描述

这个新增方法是一个多表新增,我需要新增一条员工信息,在进行查询跟判断之前先开启事务,把这些查询跟判断的方法用事务包裹起来,然后在这些操作完成后我们还需要通过提交事务,确保操作的一次成功。

方法完成我们来测试一下事务,我们先新增一条成功的数据,这一条就不多说了,这里新增成功后数据库表截图就以我后面测试的数据库截图为准,数据库表第一列数据为员工ID,成功的这一条为1045,那么接下来我们来测试一条不成功的数据,我们让事务包裹里面的操作报一个异常,这里我们要知道的事务包裹的操作,任何一步出现异常,事务是无法提交的,我用try{}catch(){},来捕获这个异常。

我们通过断点来看一下,上面图片可以看到断点情况,断点往下执行时,因为这是一条异常的数据,所以不会执行到提交事务的那一步,而是到异常触发的时候,直接跳到catch里面。

截图如下:

在这里插入图片描述

当catch执行完成后,页面会提示数据异常,然后就是操作失败,这条数据是没法在数据库保留的,他会被回滚到执行事务前的状态。

如下图所示:

在这里插入图片描述

最后我们看一下数据库,我们之前新增成功的一条数据它的员工ID为1045,那么我们异常的这一条数据就应该为1046,但是显然这一条异常的数据被回滚了,所以在数据库里是找不到这条数据的,我们能看到的只有上一条新增成功的数据。

如下图所示:

在这里插入图片描述

最后,事务有一些性质,这些性质简称为ACID性质,这些我就不多说了,详情请另行查阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值