nHibernate QueryOver返回先前的查询结果

时间:2016-10-20 13:54:05

标签: c# .net nhibernate

我有一个部门列表,我需要为每个部门获取数据,因此我有一个for循环,我在其中调用QueryOver查询。

这是查询的样子

PaDetail detail = null;
var detailWhere = Restrictions.Where(() => detail.Employee.Id == emplId
                                           && detail.PayNbr == payNbr
                                           && detail.YearNbr == yearNbr
                                           && detail.WeekNbr == weekNbr
                                           && detail.Department.Id == deptId);

var query = Session.QueryOver<Ebd>().Where(ebd => ebd.EbdType.SysKeyCode != SysKeyCodeEarnings
                                                  && ebd.Company.Id == cieId
                                                  && !ebd.CieOnly)
                                    .JoinAlias(x => x.PaDetails, () => detail, JoinType.LeftOuterJoin, detailWhere)
                                    .Future<Ebd>();

return query.ToList();

就我而言,除了 deptId 之外,所有参数都是相同的。 在使用分析器查看生成的查询后,一切看起来都很好,当我手动运行生成的查询时,我得到了正确的数据。但是当在调试模式下观察我的变量时,循环的第一次迭代获得正确的数据,但第二次迭代获得前一次的数据。

在徒劳地尝试不同的事情之后(比如使用cachemode .CacheMode(CacheMode.Get)),我意识到在使用 Session.Clear()在执行查询( query.ToList(); )之前,我正确地获取数据。

我不认为这是一个很好的解决方案,我想以干净的方式解决它。

0 个答案:

没有答案