数据访问——关于事务

事务——transaction ,它有一个典型的特点:ACID

A——原子性:事务是一个整体,不能再拆分,要么都执行要么都不执行;

C——一致性:事务执行之前和执行之后的数据要一致;

I——隔离性:事务在执行过程中,所有与事务相关的对象都不能再执行其他的操作(相当于被隔离起来)

D——持久性:事务在遇到某种特殊情况导致操作未执行完的时候,数据会回滚到最初状态

事务分为两类:

一,链接内事务:在链接打开后,使用事务控制多条语句的执行

1,创建事务对象

SqlTransaction trans=conn.BeginTransaction();  //注意必须是链接打开后编写

2,把事务对象挂到命令对象上,让命令执行带有事务的功能

cmd.Transaction=trans;

3,执行CommandText命令操作数据库

(1)成功后调用事务对象的Commit()方法来提交执行的结果。

(2)失败后调用事务对象的Rollback()方法来回滚执行前的状态。

 二,跨链接的事务:TransactionScope对象

使用该类事务的步骤:

1,启动服务:DTC 分步式事务协调器

2,引用事务程序集,在解决方案管理器的引用中,右键添加引用:system.Transactions

3,使用using system.Transactions 把命名空间导进来

4,使用TransactionScope类来控制事务。

using (TransactionScope ts = new TransactionScope())
{
DeleteWork("p001");
DeleteFamily("p001");
DeleteInfo("p001");
ts.Complete(); //必须。它是用来提交事务的。
}

原文地址:https://www.cnblogs.com/William-1234/p/4489369.html