zoukankan      html  css  js  c++  java
  • 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>();foreach (var item in proList)
                        {
                            item.StudyHours = trainPlan.TrainHours;
                            item.WorkTypeId = trainPlan.WorkId;
                            ss.Update(item);
                        }
                Session.Clear();  trans.Commit();
    return true; } catch (Exception e) { trans.Rollback(); return false; } finally { trans.Dispose(); } } }

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

  • 相关阅读:
    MySQL主从配置实现(同一台主机)
    MySQL主从配置实现
    FTP的安装配置使用
    NFS的安装配置使用
    Samba的安装配置使用
    Cacti的基本安装配置
    STL标准库-迭代器
    STL标准库-容器-unordered_set
    STL标准库-hash
    STL标准库-容器-rb_tree
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/11576605.html
Copyright © 2011-2022 走看看