• 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 不会回滚,导致第一个操作插入成功,第二个操作插入失败

    求解决方案

  • 相关阅读:
    第二周总结
    第一次结组作业概述
    Spring_Bean的自动装配
    Spring_依赖注入
    Spring_配置
    第一周总结
    1680. Concatenation of Consecutive Binary Numbers
    1631. Path With Minimum Effort
    1657. Determine if Two Strings Are Close
    1673. Find the Most Competitive Subsequence
  • 原文地址:https://www.cnblogs.com/ezplusy/p/4074008.html
Copyright © 2020-2023  润新知