首页 > 代码库 > PetaPoco4.0的事务为什么不会回滚
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 不会回滚,导致第一个操作插入成功,第二个操作插入失败
求解决方案
PetaPoco4.0的事务为什么不会回滚
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。