2013-08-19 43 views
2

我使用session.query,它第一次返回最新的数据库记录,我们在字段上编辑后填充到数据库上,然后再次执行这个查询没有从数据库获取更新的记录。数据库中的字段已更新但未获取更新的记录。下面session.Query没有从数据库获取更新的记录

List<FiscalPeriod> lstPeriods = new List<FiscalPeriod>(); 
    using (var tr = session.BeginTransaction()) 
    { 

     try 
     { 
      List<TSCFiscalPeriod> lstFiscalPeriods = session.Query<TSCFiscalPeriod>().ToList(); 

      if (lstFiscalPeriods != null && lstFiscalPeriods.Count > 0) 
      { 
       foreach (var period in lstFiscalPeriods) 
       { 
        FiscalPeriod objPeriod = new FiscalPeriod(); 
        objPeriod.Period = period.Id.FPeriod; 
        objPeriod.Name = "Period " + objPeriod.Period; 
        objPeriod.CompanyID = period.Id.FCompanyID; 
        objPeriod.Year = period.Id.FFiscalYear; 
        objPeriod.Begin = period.FBeginDate; 
        objPeriod.End = period.FEndDate; 
        objPeriod.OpenAP = FOpenAP(period.FOpen); 
        objPeriod.OpenGL = FOpenGL(period.FOpen); 
        objPeriod.SCFiscalPeriod = period; 
        objPeriod.IsExisting = true; 
        lstPeriods.Add(objPeriod); 
       } 
      } 
      tr.Commit(); 
     } 
     catch (Exception ex) 
     { 
      lstPeriods = null; 
      CusException cex = new CusException(ex); 
      cex.Write(); 
     } 
     return lstPeriods; 
    } 

我NHibernate的查询,给出是否有任何更新的方法或东西我做错了。 任何帮助将不胜感激。谢谢

+0

我不太了解NHibernate,但从我读的会话就像是一个UnitOfWork。在例子中,我看到一个新的会话被提取并关闭每个事务...你是否重新使用同一个会话? http://nhforge.org/doc/nh/en/index.html#quickstart-playingwithcats –

+0

是的,我们正在使用相同的session.We已经删除“使用(var tr = session.BeginTransaction())”并检查功能但同样的事情正在发生 –

+0

是不是你的问题,你正在使用同一个会话的事实... 你是否尝试过关闭每次提交事务的会话,就像我提供的链接一样? 我再次对NHibernate没有那么热,大约一年没有用过它。 'lstPeriods.Add(objPeriod)'''后面的 –

回答

2

确保您保存会话后使用session.clear()session.flush()

2

Nhibernate会话是一个静态初始化程序。 有时会话不能刷新值。

所以,你必须冲洗并清除会话

session.flush(); 
session.clear();