EAS_AOP分布式事务
在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都没有插入数据
EAS_AOP分布式事务的更多相关文章
- 群集中的MS DTC分布式事务协调器
MS DTC在大多数SQL 服务器下都需要安装,若只是安装数据库引擎或Analysis 服务可不安装DTC.如果后需要使用分布式事务,则可在SQL Server群集安装完成后再安装DTC. 一.群集M ...
- 事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)
1:本地事务DbTransaction和分布式事务TransactionScope的区别: 1.1:System.Data.Common.DbTransaction: 本地事务:这个没什么好说了,就是 ...
- 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务
在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...
- 已禁用对分布式事务管理器(MSDTC)的网络访问的解决方法之一
C# ASP.NET项目提示上述错误,在代码中使用分布式事务提示添加或修改到数据库的时候.添加数据到数据库时,不会设置实体类的主键字段.
- 【转】PostgreSQL分布式事务配置
XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos. 如果PostgreSQL参与分布式 ...
- 分布式事务(一)两阶段提交及JTA
原创文章,同步发自作者个人博客 http://www.jasongj.com/big_data/two_phase_commit/ 分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库(或 ...
- 关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?
背景: 事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...
- 分布式事务操作之Spring+JTA
什么是分布式事务?在网上找了一段比较容易理解的"定义". 分布式事务是指事务的参与者.支持事务的服务器.资源管理器以及事务管理器分别位于分布系统的不同节点之上,在两个或多个网络计算 ...
- java分布式事务
1.现有方案 a.atomikos b.jotm 说明:spring3.0已将jotm的支持踢掉 2.使用atomikos时的pom.xml内容 <!-- 分布式事务支持-atomikos-be ...
随机推荐
- jquery.raty.js 评星插件的使用
需要实现一个五星好评的功能,所以找到了这个JQ插件,使用起来还算简单,在这里记录下使用的方式. 第一步:导入这个插件和压缩包中的img文件夹 <script type="text/ja ...
- oracle事务知识点小结
DML语句流程 1 获取事务锁和ITL2 锁定候选行3 生成redo4 生成undo5 生成redo record写入log buffer并更改数据块 事务提交1 分配SCN2 更新事务表,将事务槽状 ...
- 符合RESTful规范的API
统一使用的utils,serializers: class BaseResponse: def __init__(self): self.code = 1000 self.data = None se ...
- SQL常用条件操作符
1.SQL的六类内容: (1)数据定义语言(DDL): 创建.删除表结构的语句,包括Create.Drop (2)数据控制语言(DCL): 为定义数据访问及修改权限而实现的语句,包括Grant.Rev ...
- linux中grep工具
正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...
- js解决弹窗问题实现班级跳转DIV示例
js解决弹窗问题实现班级跳转DIV 1.js代码如下: <%--实现班级跳转DIV--%> <div id="displayClassDiv" style=&q ...
- #用openfiledialog文件和savefileDialog打开和保存文件
一.打开文件 Stream myStream = null; OpenFileDialog openFileDialog1 = new OpenFileDialog(); ...
- windows下使用nginx配置tomcat集群
转自:https://blog.csdn.net/csdn15698845876/article/details/80658599
- 跟我学算法-tensorflow 实现卷积神经网络
我们采用的卷积神经网络是两层卷积层,两层池化层和两层全连接层 我们使用的数据是mnist数据,数据训练集的数据是50000*28*28*1 因为是黑白照片,所以通道数是1 第一次卷积采用64个filt ...
- PIN 引脚类型
一个 capture filter 通常有两个或更多个输出相同类型数据的输出引脚,例如预览引脚和捕捉引脚.因此,媒体类型不是区分引脚的好方法. //相反,这些引脚通过它们的功能来区分,这些功能是使用称 ...