当我设置SetFirstResult时,Projections.RowCountInt64()返回0

时间:2009-01-12 02:48:52

标签: nhibernate projection rowcount

当query.SetFirstResult与0不同时,

rowCount 返回0?

如果pageIndex x pageSize = 0的结果//它给了我rowCount但是当它不等于0时,countCriteria给我0而不是rowCount。

我该怎么办?

提前致谢

2 个答案:

答案 0 :(得分:0)

首先要使用sqlprofiler并检查正在执行的sql。也许这有点不对劲。我不能在标准中看到错误。

答案 1 :(得分:0)

我已经解决了我的问题。问题是,Nhibernate有一个关于 CriteriaTransformer.TransformToRowCount 的工作人员。它返回int不长。

上面我做错了,我试图得到有限结果集的行数(SetFirstResult和SetMaxResult设置的查询)

ISession session = NHibernateHttpModule.CurrentSession;

            var countCriteria = CriteriaTransformer.TransformToRowCount(query);
            rowCount = Convert.ToInt64(countCriteria.GetExecutableCriteria(session).UniqueResult());

            query.SetMaxResults(pageSize).SetFirstResult(pageIndex * pageSize);
            var customers = query.GetExecutableCriteria(session).List<Customer>();

这是我的场景的解决方案。我希望它可以帮助那些有同样问题的人。

Thaks