当前位置: 首页 > news >正文

TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成

实事上,一个错误的理解就是Complete()方法是提交事务的,这是错误的,事实上,它的作用的表示本事务完成,它一般放在try{}的结尾处,不用判断前台操作是否成功,如果不成功,它会自己回滚。

  #region 事务问题
            using (TransactionScope trans = new TransactionScope())
            {
                try
                {
                    InsertUserBase(); //它插入不成功,自己回滚

                    UserInfos userInfo = new UserInfos
                    {
                        UserID = "1",
                        RealName = "zzl",
                    };
                    db.UserInfos.InsertOnSubmit(userInfo);
                    db.SubmitChanges();

                    trans.Complete();
                }
                catch (Exception)
                {

                    // throw;
                }
                finally
                {
                    trans.Dispose();
                }
            }
            #endregion

  static bool InsertUserBase()
        {

            bool flag;
            try
            {
                UserBases userbase = new UserBases
                {
                    UserID = "0005",
                    Name = "zzl",
                    CreateDate = DateTime.Now,
                    UpdateDate = DateTime.Now,

                };
                db.UserBases.InsertOnSubmit(userbase);
                db.SubmitChanges();
                flag = true;
            }
            catch (Exception)
            {

                throw;
            }
            return flag;

        }

InsertUserBase()只要出现异常,程序将自己回滚

本文转自博客园张占岭(仓储大叔)的博客,原文链接:TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成,如需转载请自行联系原博主。

相关文章:

  • 网络流媒体技术及其应用
  • 【安全牛学习笔记】w3af-截断代理
  • 典型Linux发行版内核版本
  • Web开发中的文件上传组件uploadify的使用
  • httpie使用详解
  • 程序猿的日常——SpringMVC系统架构与流程回顾
  • Web监听器导图详解
  • 如何成为好的系统分析员
  • 分布式监控系统Zabbix3.2给异常添加邮件报警
  • 如何保证用户密码安全
  • Lintcode123 Word Search solution 题解
  • The Little Prince-12/08
  • React中路由传参及接收参数的方式
  • 移动硬盘做pe启动盘
  • Java爬虫——人人网模拟登录
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 0x05 Python数据分析,Anaconda八斩刀
  • CentOS从零开始部署Nodejs项目
  • exif信息对照
  • Java教程_软件开发基础
  • Promise初体验
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Shell编程
  • swift基础之_对象 实例方法 对象方法。
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 前嗅ForeSpider教程:创建模板
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 数组大概知多少
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 协程
  • 学习HTTP相关知识笔记
  • 追踪解析 FutureTask 源码
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • gunicorn工作原理
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​2020 年大前端技术趋势解读
  • #{} 和 ${}区别
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragam once 和 #ifndef 预编译头
  • $.ajax()参数及用法
  • (1)(1.9) MSP (version 4.2)
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (生成器)yield与(迭代器)generator
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)关于pipe()的详细解析
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .gitignore
  • .Net 路由处理厉害了
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET中统一的存储过程调用方法(收藏)