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表示事务完成,如需转载请自行联系原博主。

时间: 2024-10-08 03:42:43

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

sql server-SQL Server 一条UPDATE执行超时 这时会自动回滚所有已经执行的更行吗

问题描述 SQL Server 一条UPDATE执行超时 这时会自动回滚所有已经执行的更行吗 如题 我误操作执行一条UPDATE执行 后在执行过程中立即关闭了客户端. 因为数据量极大 肯定会超时的 这时会自动回滚所有已经执行的更新吗 没有加上事务语句,但是一条更新语句应该属于SQLServer的隐式事务吧.这个时候会自动回滚吗? 求教各位大神 谢谢大家 解决方案 启动SQL SERVER时自动执行存储过程启动SQL Server时自动执行存储过程sql server 自动执行存储过程 解决方案二

java-jbpm4.4 邮件失败导致的流程回滚问题

问题描述 jbpm4.4 邮件失败导致的流程回滚问题 10C jbpm4.4流程已经跑通,发邮件用的task节点下的notification标签.但是如果邮件一旦发送失败,流程整体就会回滚(不会进入下一个节点),如何能将邮件的发送和流程的推进单独进行(进入下一节点发邮件,邮件失败提醒一下,但也不会影响流程)?另外,notification中的continue=""async""是什么意思(async和exclusive有什么区别)?一旦流程图里面规定async,jb

应用-事件驱动架构,有一个异步出错了,怎么样回滚

问题描述 事件驱动架构,有一个异步出错了,怎么样回滚 就是说,在一个事件驱动架构的应用中,一个按钮同时出发了A,B,C三个事件,然后程序到后台进行异步处理,但是其中一个B事件在执行的时候出错了,我想回滚A,C事件中的操作,这样可以做到吗?希望懂得大神们可以为小弟解答.

DDL, DML不是所有SQL都是可以自动回滚的

因为DDL没有事务性,所以DDL不能回滚. 要实现自动回滚.(begin,commit,rollback),则SQL语句中只能包括DML. 这样,自动化发布就会受限规范格式. 故而,一刀切的办法是,假定所有SQL不支持事务,自已定义好ROLLBACK的SQL脚本,在出错时能用代码回滚, 而不是依赖于数据库本身的功能. ======================== DDL和DML DDL (Data Definition Language 数据定义语言) create table 创建表 al

插入多条数据回滚-hibernate 手动控制事务回滚失败

问题描述 hibernate 手动控制事务回滚失败 spring配置: 5201005100 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" />

两个事务任意失败一个回滚

问题描述 两个事务任意失败一个回滚 不加任何措施,两个事务呈直线,第一个失败就不执行第二个,但怎么使第一个失败了还能执行第二个,来判断到底哪个事务有问题 解决方案 2个事务,还是直线的关系 如果你想第二个事务失败了还能回滚第一个事务那么也就是说第一个事务没有commit了 不放做一个事务的观察控制器 将所有的事务注册在这个观察器里面, 然后这个观察控制器可以记录每个事务的运行结果并且可以显示指定那个事务可以先执行 大体做法: 1--你先做一个事务的接口,里面定义这个事务的执行方法和事务的运行状态

PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)_php技巧

本文实例讲述了PHP入门教程之使用Mysqli操作数据库的方法.分享给大家供大家参考,具体如下: Demo1.php <?php //使用 mysqli 对象操作数据库 //创建 mysqli 对象(资源句柄) $_mysqli = new mysqli(); //连接数据库 1.主机名(ip) 2.账户 3.密码 4.数据库 //mysqli_connect 函数 == $_mysqli -> connect(); $_mysqli -> connect('localhost','ro

MySQL数据库误操作后快速回滚的方法_Mysql

基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了.误操作后,能快速回滚数据是非常重要的. binlog2sql快速回滚 首先,确认你的MySQL server开启了binlog,设置了以下参数: [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_siz

自制的一个操作sqlite数据库的库文件

 自制的一个操作sqlite数据库的库文件,写时用的IDE是KDevelop3.3.4. 头文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #ifndef _SQLITE3LIB_H_ #define _SQLITE3LIB_H_   #include <stdio.h> #include <stdlib.h> #include<sqlite3.