2

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

我的 NHibernate 查询如下

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;
    }

是否有任何刷新方法或我做错了什么。任何帮助将不胜感激。谢谢

4

2 回答 2

2

Nhibernate session 是一个静态初始化器。有时会话无法刷新值。

所以你必须刷新并清除会话

session.flush();
session.clear();                                
于 2013-08-19T14:36:31.437 回答
2

确保您正在使用session.clear()session.flush()保存会话之后。

于 2013-08-19T14:48:24.143 回答