2013-08-19 66 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();