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

发布于 2024-07-11 05:58:31 字数 206 浏览 13 评论 0原文

当 query.SetFirstResult 与 0 不同时,rowCount 返回 0 ?

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

我能做些什么 ?

提前致谢

rowCount returns 0 when query.SetFirstResult is different from 0 ?

if the result of pageIndex x pageSize = 0 // it gives me the rowCount but when it is not equal to 0, countCriteria gives me 0 instead of rowCount.

What can i do ?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夕嗳→ 2024-07-18 05:58:31

首先是使用 sqlprofiler 并检查正在执行的 sql。 也许这有什么问题。 我看不出标准有什么问题。

First thing would be to use a sqlprofiler and check the sql that is getting executed. Maybe there's something wrong with that. I can't see something wrong in the criteria.

年少掌心 2024-07-18 05:58:31

我已经解决了我的问题。 问题是,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>();

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

他克斯

I have solved my problem. The thing is, there is a buggy staff with Nhibernate about CriteriaTransformer.TransformToRowCount. It returns int not long.

And what i did wrong above is, i was trying to get the row count of limited result set(the query on which SetFirstResult and SetMaxResult setted)

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>();

This is the solution for my scenerio. I hope it helps someone who has the same issue.

Thaks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文