我有一个部门列表,我需要为每个部门获取数据,因此我有一个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(); )之前,我正确地获取数据。
我不认为这是一个很好的解决方案,我想以干净的方式解决它。