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 事务 修改操作,事务没提交,数据库数据却同步(修改)了的主要内容,如果未能解决你的问题,请参考以下文章

事务的隔离级别和mysql事务隔离级别修改

ORACLE数据恢复方法(提交事务也可以)

ORACLE数据恢复方法(提交事务也可以)

数据库事务的四种隔离模式

数据库

MYSOL 学习笔记之事务处理