在System.Transactions事务体系中,为事务提供了7种不同的隔离级别。这7中隔离级别分别通过 System.Transactions.IsolationLevel的7个枚举项表示。

public enum IsolationLevel
  {
      Serializable,
      RepeatableRead,
      ReadCommitted,
      ReadUncommitted,
      Snapshot,
      Chaos,
      Unspecified
  }

7个隔离级别之中,Serializable具有最高隔离级别,代表的是一种完全基于序列化(同步)的数据 存取方式,这也是System.Transactions事务默认采用的隔离级别。按照隔离级别至高向低,7个不同的 隔离级别代表的含义如下:

* Serializable:可以在事务期间读取可变数据,但是不可以修改,也不可以添加任何新数据;

* RepeatableRead:可以在事务期间读取可变数据,但是不可以修改。可以在事务期间添加新数据;

* ReadCommitted:不可以在事务期间读取可变数据,但是可以修改它;

* ReadUncommitted:可以在事务期间读取和修改可变数据;

* Snapshot:可以读取可变数据。在事务修改数据之前,它验证在它最初读取数据之后另一个事务是 否更改过这些数据。如果数据已被更新,则会引发错误。这样使事务可获取先前提交的数据值;

* Chaos:无法覆盖隔离级别更高的事务中的挂起的更改;

* Unspecified:正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。如果设置了此值 ,则会引发异常。

先定义一个接口,Tran方法准备使用事务

namespace Drug.BLL
{
public interface ITranTest
{
void Tran();
}
}

业务层代码

namespace Drug.BLL
{
[ServiceBind(typeof(ITranTest))]
public class TranTest : ITranTest
{
     //给需要通过事务执行的方法打上Transaction标记,并设置事务隔离级别
     [Transaction(System.Transactions.IsolationLevel.Serializable)]
public void Tran()
{
Test1 t1 = new Test1();
t1.id = ;
t1.name = "Test1";
t1.Save(); Test2 t2 = new Test2();
t2.id = ;
//故意使长度超过数据库字段的长度,让操作失败
t2.tname = "Test2kkkkkkkkkkkkkkkkkkkkkkkkkkk";
t2.Save();
}
}
}

最后执行事务进行测试

            try
{
ITranTest ITrans = ServiceContainer.GetService<ITranTest>();
ITrans.Tran();
MessageBox.Show("事务执行成功!");
}
catch
{
MessageBox.Show("事务执行失败!");
}

执行到t2.Save()的时候会提示字符串将被截断 事务操作不能成功,Test1和Test2都没有插入数据

最新文章

  1. Mysql 存储引擎中InnoDB与Myisam的主要区别
  2. js构建ui的统一异常处理方案(二)
  3. DTD的作用
  4. 在 SQL Server 数据库的 WHERE 语句中使用子查询
  5. go1.6.2 linux/amd64 的一个bug: gcc: 无法识别的选项&lsquo;-no-pie&rsquo;
  6. Android knock code analysis
  7. springmvc里面的中文乱码问题
  8. Objective-C 学习笔记(Day 2)
  9. cURL: Learning..
  10. Oracle教程-查询(二)
  11. Bootstrap入门(二十七)JS插件4:标签页
  12. v-for key
  13. Java学习--数组--判断数组中是否包含某个元素的方法
  14. centos 批量杀死进程
  15. Object.defineProperty方法
  16. MySql笔记二:命令简介
  17. POJ 1456 - Supermarket - [贪心+小顶堆]
  18. 大数据学习路线分享-Hbase shell的基本操作完整流程
  19. mongodb细节
  20. apk 静默安装

热门文章

  1. [转][ASP.NET]ASP.NET 预编译网站
  2. cookies封装
  3. javascript中原型,构造器,还有E5扩展的默认成员
  4. 【python 】装饰器 (多个参数的函数,带参数的装饰器)【转】
  5. 迷你MVVM框架 avalonjs 1.3.4发布
  6. artZoom 图片可放大旋转
  7. 关于ueditor与arcgis js api同用会报错的问题
  8. _MainTex_TexelSize what&#39;s the meaning?
  9. windows安装mysql-5.7压缩版详细教程
  10. Linux automake命令