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

求解决方案

posted @ 2014-11-04 16:26  eZplusy  阅读(597)  评论(2编辑  收藏  举报