在三层架构的B层应用TransactionScope事务
来源:互联网 发布:红色草原软件 编辑:程序博客网 时间:2024/05/20 04:14
一说到事务大家都会想到在存储过程中使用事务,这样可以保证多表操作时的数据一致性。但是三层架构中D层的方法很多都是针对单表操作的,与之对应的数据库存储过程一般也只涉及到关系密切的几个表而已。但是当我们的B层业务需要对很多表进行操作时,用存储过程来保证事务性显得灵活性不够。那么怎样才能在B层使用事物呢?
我上网查过很多资料,大部分都是用SqlTransaction这个类来在程序代码中保证事务性,但是SqlTransaction是与SQL Server数据库相关的类,如果将这个类用在了B层,那么就突破了三层架构的底线了,如果将来换数据库(比如从SQL Server换到Oracle),D层和B层都得重写,所以这样做的局限性很大。
后来我在网上查到了一个轻量级的事物类TransactionScope,这个类是与具体数据库无关的类,用这个类来保证B层的事务性十分可行。
下面说一下这个类的基本用法
在TransactionScope中默认的事务级别是Serializable,即在事务过程中,完全性锁表。别的进程不能查询,修改,新增,删除。这样会导致效率大大降低,虽然数据完整性很高。通常我们不需要那么高的数据完整性。所以需要修改默认的事务级别:
通过TransactionOptions类来改变事物的级别
TransactionOptions option = new TransactionOptions();option.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
然后用option作为TransactionScope的构造函数的参数就可以建立低级别的TransactionScope对象了
using(TransactionScope scope=new TransactionScope(TransactionScopeOption.Required,option)){ //此处为需要保证事务性的多个方法 if(方法全部执行成功) { scope.Complete();//提交事务 }}
注:方法是否执行成功可以通过方法的返回值来判断,因为B层调用D层的方法返回的一般都是bool值,所以只要所有的方法返回值都是true,那么就可以提交事务了,否则将不提交事务,using中的代码相当于没有被执行一样
- 在三层架构的B层应用TransactionScope事务
- 模板在三层架构上的应用
- TransactionScope()事务的问题
- Asp.net 在三层架构中事务的使用
- MVC与B/S,C/S结构,三层架构/两层架构 的关系
- TransactionScope的使用--业务层使用多个方法实现回滚解决方案-业务层事务
- 三层架构在SSM框架中应用的示意图
- .NET的三层架构应用
- 三层架构中Model层的作用?
- 三层的优化(七层架构)
- 对三层架构的浅层理解
- MVC 三层架构 事务
- 三层架构和事务
- TransactionScope事务
- 事务处理在三层架构中的应用
- MVC三层架构在ASP中的应用
- 三层架构在移动开发中的应用
- 三层架构——U层、B层、D层,层层深入
- Android开发之对上下两个图层的操作
- 解析codepage和charset的含义及其应用
- The Castle
- memcached全面剖析–2.理解memcached的内存存储
- 多少块地(求可以分成多少个独立的区域)
- 在三层架构的B层应用TransactionScope事务
- Linux下判断文件或文件夹是否存在的方法
- 各自天涯 各自珍重
- memcached全面剖析–3.memcached的删除机制和发展方向
- 关于QQ2009聊天消息获取原理说明 .
- ADO.Net 精简的三层架构(初学者)
- ZOJ 2433 Highways(水题)
- 虚拟主机安全方案
- 位移进制运算