PetaPoco4.0的事务为什么不会回滚

using (var srop=DbHelper.CurrentDb.GetTransaction())
        {
            ID = bp.AddModel(model).ToStr();
            #region 参与楼盘信息
            if (ID.ToInt32() > 0)
            {
                FY_ActivityProjectServer dtlServer = new FY_ActivityProjectServer();
                for (int i = 0; i <= this.Projects.Items.Count; i++)
                {
                    if (this.Projects.Items[i].Selected)
                    {
                        FY_ActivityProject dtl = new FY_ActivityProject();
                        dtl.ActivityID = ID.ToInt32();
                        dtl.ProjectID = this.Projects.Items[i].Value.ToInt32();
                        dtl.IsDel = false;
                        dtlList.Add(dtl);
                    }
                }
                dtlServer.AddModel(dtlList);
            }
            #endregion
            srop.Complete();
        }

以上是第一种写法

下面是第二种写法:

DbHelper.CurrentDb.BeginTransaction();//事务开始
        this.ModelDataCollect();
        FY_ActivityServer bp = new FY_ActivityServer();
        try
        {
            ID = bp.AddModel(model).ToStr();
            #region 参与楼盘信息
            if (ID.ToInt32() > 0)
            {
                FY_ActivityProjectServer dtlServer = new FY_ActivityProjectServer();
                for (int i = 0; i <= this.Projects.Items.Count; i++)
                {
                    if (this.Projects.Items[i].Selected)
                    {
                        FY_ActivityProject dtl = new FY_ActivityProject();
                        dtl.ActivityID = ID.ToInt32();
                        dtl.ProjectID = this.Projects.Items[i].Value.ToInt32();
                        dtl.IsDel = false;
                        dtlList.Add(dtl);
                    }
                }
                dtlServer.AddModel(dtlList);
            }
            #endregion
            DbHelper.CurrentDb.CompleteTransaction();
        }
        catch (Exception)
        {
            DbHelper.CurrentDb.AbortTransaction();
        }

以上操作有两个insert操作

第一个insert能插入成功,第二个insert方法故意让它报错,

问题来了,

PetaPoco 不会回滚,导致第一个操作插入成功,第二个操作插入失败

求解决方案

时间: 2024-10-18 23:13:21

PetaPoco4.0的事务为什么不会回滚的相关文章

Spring transaction事务之roll back回滚

转自:http://blog.csdn.net/lovejavaydj/article/details/7635848 试验方法: 写一个单元测试,调用一个service层方法(发生对数据库进行写操作的方法--insert.update.delete)即可. 试验过程: 定义一个service方法如下: public SMSTiming createSMSTiming(SMSTiming smsTiming){ SMSTiming s= this.getSmsTimingDAO().create

mysql事务的提交和回滚

START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET AUTOCOMMIT = {0 | 1} 以上是mysql创建存储过程的官方语法.    我这里要说明的mysql事务处理多个SQL语句的回滚情况.比如说在一个存储过程中启动一个事务,这个事务同时往三个表中插入数据,每插完一张表需要判断其

spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

1 //假设这是一个service类的片段 2 3 try{ 4 //出现异常 5 } catch (Exception e) { 6 e.printStackTrace(); 7 //设置手动回滚 8 TransactionAspectSupport.currentTransactionStatus() 9 .setRollbackOnly(); 10 } 11 //此时return语句能够执行 12 return xxx; 如上: 当我们需要在事务控制的service层类中使用try cat

mysql 实现事务的提交与回滚

最近要对数据库的数据进行一个定时迁移,为了防止在执行过程sql语句因为某些原因报错而导致数据转移混乱,因此要对我们的脚本加以事务进行控制. 首先我们建一张tran_test表 CREATE TABLE tran_test( f1 VARCHAR(10) NOT NULL, f2 INT(1) DEFAULT NULL, PRIMARY KEY (f1) )ENGINE=INNODB CHARSET=utf8 我想对tran_test插入两条数据,但是为了防止插入中报错,因此我要把插入语句控制在一

解决maven不能升级为web 3.0和jdk版本因update回滚错误

第一个问题的解决是因为版本号与配置文件不匹配造成的,解决办法是到项目下的.setting目录,修改org.eclipse.wst.common.project.facet.core.xml文件中的版本号,如下图: 还要修改web.xml的版本 2.3:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-

回滚的意义---JDBC事务回滚探究

JDBC手动事务提交回滚的常见写法一直是rollback写在commit的catch之后: try{ conn.setAutoCommit(false); ps.executeUpdate(); ps.executeUpdate(); conn.commit(); }catch(Exception e){ conn.rollback(); } 但是,这种回滚是没有意义的: 一旦commit前出错, 就不提交了, 回滚无用 一旦commit了, 说明没错, 不用回滚 找到一篇和我观点相同的文章:

springmvc事务回滚失效

转载:http://blog.csdn.net/z69183787/article/details/37819831 前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTemplate.搭框架时,发现了一个事务无法正常回滚的问题,记录如下: 首先展示问题: Spring applicationContext.xml配置: [html] view plaincopy <bean id="dataSource" class="org.spring

数据库事务处理机制之事务回滚问题讨论

一.Sql中的事务 概念:事物是一种机制,是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.事务是一个不可分割的工作逻辑单元.在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.多用户登录系统适于使用事务机制. 属性:4大属性: a.原子性:事务时一个完整的操作.b.一致性:当事务完成时,数据库必须处于一致状态.c.隔离性:对数据进行修改的所有并发事务时彼此隔离的.d.持久性:事务完成后,它对于系统的影响是永久性的. 创建 (1)开始事务:begin t

MSSQL Tran 数据库事务回滚的用法

使用的表结构如下: USE [TestDB]GO/****** 对象:  Table [dbo].[Person]    脚本日期: 11/23/2008 13:37:48 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Person](    [PersonId] [nchar](18) NOT NULL,    [PersonName] [nchar](20) NOT NULL, CONSTRAI