NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了
Posted xiaonangua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了相关的知识,希望对你有一定的参考价值。
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 事务 修改操作,事务没提交,数据库数据却同步(修改)了的主要内容,如果未能解决你的问题,请参考以下文章