session.Query没有从数据库获取更新的记录

时间:2013-08-19 11:51:00

标签: c# nhibernate fluent-nhibernate

我正在使用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;
    }

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

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