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(); } } }
如果不添加标红语句,事务期间抛出异常,数据库的数据仍会修改
原文地址:https://www.cnblogs.com/xiaonangua/p/11576605.html
时间: 2024-10-15 02:13:36