使用DistinctRootEntity进行分页

时间:2014-05-08 14:10:40

标签: nhibernate fluent-nhibernate

我在一个函数中进行查询设置,产生重复的根实体。我添加了变换器以删除重复项。这是按预期工作的。但是,当我添加分页时,我们遇到了问题。例: 我有30条记录,删除5条重复记录,剩下25条记录。当我添加页面大小为10的分页时,我将在第一页上获得8条记录,在第二页上获得9条记录。我能想出的唯一解决方案是拉出所有不同的记录,然后使用linq进行一个take并跳过来实现分页。我使用这种方法的问题是我正在做的这个网站有超过10,000条记录,它需要永远(60秒)。任何帮助将不胜感激。

提前致谢。

ICriteria query = FluentSessionManager.GetSession()
            .CreateCriteria<PatientsPickupMaintRequests>();

query.CreateAlias("PatientsPickupMaintRequestsToPatientsEquipment", "ppmrtpe");
        query.CreateAlias("ppmrtpe.PatientsEquipment", "pe");
        query.CreateAlias("pe.Patients", "p");
        query.CreateAlias("p.Facilities", "f");
        query.CreateAlias("p.Locations", "l");
        query.CreateAlias("l.Branches", "b");

query.Add(Expression.Eq("b.ID", branchID));

query.SetResultTransformer(Transformers.DistinctRootEntity);

query.SetFirstResult(startIndex).SetMaxResults(rowCount);

return query.List<PatientsPickupMaintRequests>();

0 个答案:

没有答案