码迷,mamicode.com
首页 > 数据库 > 详细

NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了

时间:2019-09-24 10:21:00      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:res   nan   查询   bool   on()   framework   provider   解决方法   type   

 

Nhibernet 缓存

由于查询出来的数据和缓存关联,更新之后就算事务没执行提交操作,数据库依旧会更新,解决方法, 清空缓存,实例不和缓存关联,如下面标红代码

public bool UpdateTrainPlanAndPro(TrainPlan trainPlan,List<Pro> pros)
        {
            ISession ss = NHibernateHelper.FrameworkDataProvider.Instance.GetSession();
            ITransaction trans = null;
            using (trans = ss.BeginTransaction())
            {
                try
                {
                    ss.Update(trainPlan);
                    var proList = Session.CreateCriteria<Pro>().Add(Expression.Eq("TId", trainPlan.Id)).List<Pro>();
                    Session.Clear();
                    foreach (var item in proList)
                    {
                        item.StudyHours = trainPlan.TrainHours;
                        item.WorkTypeId = trainPlan.WorkId;
                        ss.Update(item);
                    }
                    trans.Commit();
                    return true;
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    return false;
                }
                finally
                {
                    trans.Dispose();
                }
            }
        }

如果不添加标红语句,事务期间抛出异常,数据库的数据仍会修改

 

NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了

标签:res   nan   查询   bool   on()   framework   provider   解决方法   type   

原文地址:https://www.cnblogs.com/xiaonangua/p/11576605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!