博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015.10.14-TransactionScope测试
阅读量:6894 次
发布时间:2019-06-27

本文共 1122 字,大约阅读时间需要 3 分钟。

测试代码:

int i = 10;int xx = 20;List
lst = null;Action doSth = () =>{ using (var db = new TestSystemEntities()) { var f = db.ABC.ToList(); f.ForEach(x => x.C = "TestTransactionScope"); db.SaveChanges(); } new Task(() => { using (var db = new TestSystemEntities()) { var f = db.ABC.ToList(); f.ForEach(x => x.C = "AsyncTestTransactionScope"); db.SaveChanges(); } }).Start(); i = 20; lst.Insert(0, "xx"); xx = 100;};try{ TransactionOptions tr = new TransactionOptions() { IsolationLevel = IsolationLevel.Serializable, Timeout = TransactionManager.MaximumTimeout }; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, tr)) { doSth(); scope.Complete(); }}catch (Exception ex){ Console.WriteLine("exception happens");}Console.WriteLine("i: {0}, xx: {1}", i, xx);

上面的代码,由于lst一直为null,当执行到lst.Insert的时候,会出现异常,触发事务回滚。

测试结论:回滚效果,同步SQL里面的操作回滚了,但内存中object并未回滚,异步的SQL里面也未回滚.

如图:

转载于:https://www.cnblogs.com/icyJ/p/TransactionScope.html

你可能感兴趣的文章
30-seconds-code——Object
查看>>
pyspark底层浅析
查看>>
【设计模式】组合模式之神经网络应用
查看>>
Jenkins系统搭建及常见操作
查看>>
SQL Server 2012自动异地备份
查看>>
Ubuntu 下 SVN 多版本库的搭建
查看>>
CSS选择器
查看>>
PHP遍历接口Iterator详解
查看>>
一款简单到极致的 React 数据流框架——Refast
查看>>
ribbon的ServerListRefreshInterval
查看>>
Android我还可以相信你多少系列文章二之音视频播放
查看>>
使用Brotli提高网站访问速度
查看>>
Python3安装Pymongo
查看>>
OS层面删除数据文件后的恢复方式(LINUX):
查看>>
用FileZilla搭建FTP服务器及相关问题
查看>>
http状态吗307,303,302的区别
查看>>
(译)Scrum和XP的不同
查看>>
Vue 2 | Part 5 列表渲染和事件监听
查看>>
Redux概念之四: reducer(归纳函数)与纯函数
查看>>
页面加载事件--DOMContentLoaded
查看>>