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

更新方法はありますか、それとも間違っていますか。どんな助けでも大歓迎です.thanks

4

2 に答える 2

2

Nhibernate セッションは静的初期化子です。セッションが値を更新できない場合があります。

したがって、セッションをフラッシュしてクリアする必要があります

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

session.clear()またはsession.flush()セッションを保存した後に使用していることを確認してください。

于 2013-08-19T14:48:24.143 に答える