首页 新闻 会员 周边

EF分页查询数据出现严重问题

0
悬赏园豆:50 [已解决问题] 解决于 2015-08-28 15:24
                var pageindex = new SqlParameter { ParameterName = "PageIndex", SqlDbType = SqlDbType.Int, Value = PageIndex };
var pagesize = new SqlParameter { ParameterName = "PageSize", SqlDbType = SqlDbType.Int, Value = PageSize };
var totalcount = new SqlParameter { ParameterName = "TotalCount", SqlDbType = SqlDbType.Int, Value = 0, Direction = ParameterDirection.Output }; ctx.Database.SqlQuery<Student>("Myproc @PageIndex,@PageSize,@TotalCount output", pageindex, pagesize, totalcount).ToList();

上述是指定存储过程及相关参数。下面为要执行的存储过程

问题来了:当页码(PageIndex)为1,页容量(PageSize)为10时,也就是要获取前十条的数据,用EF查询时查询出来的却是最后一条数据,与此同时在数据库中单独执行存储过程是能够取出前十条数据的!请问问题出在哪里?

补充:将存储过程中的如下

修改为

between 1 and 10

再用EF调用存储过程却能取到前十条数据。

这是为何?

Jeffcky的主页 Jeffcky | 老鸟四级 | 园豆:2789
提问于:2015-08-28 12:09
< >
分享
最佳答案
0

会不会是这两个参数写反了!

收获园豆:35
at小怪兽 | 小虾三级 |园豆:760 | 2015-08-28 14:32

哦觉得你这是最佳答案了,难怪我测试的时候是正确的

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 14:42

@稳稳的河: 嗯 你上边说测了没问题 那可能就是参数位置的事儿了!

at小怪兽 | 园豆:760 (小虾三级) | 2015-08-28 14:53

@莫宇: 嗯,了解了,犯低级错误了,谢谢!

Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 15:05

@稳稳的河: 谢谢回答!

Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 15:06

@Recluse_Xpy: 哎...

空明流光 | 园豆:106 (初学一级) | 2015-08-29 09:16
其他回答(4)
0

没看出问题,你用窗口函数排序是OK的,你该看看EF传过来的PageIndex,PageSize的值到底是什么

收获园豆:5
稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 12:23

用profiler监控传递过来的页码是1每页大小是10没错

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 12:24

@Recluse_Xpy: 怪异,下午我去测试下看看

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 12:26

@稳稳的河: 发图片你看

参数传递是正确的

 

 

 

 

 

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 12:28

@Recluse_Xpy: 所以我说奇怪呀

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 12:30

@稳稳的河: 不会是between  and 的问题吧,改成t.RowIndex>(@PageIndex-1)*@PageSize and t.@RowIndex<=(@PageIndex)*@PageSize你先试试

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 13:24
0

用EF调用存储过程没什么,调用分页存储过程,是不太想得通

收获园豆:5
吴瑞祥 | 园豆:29449 (高人七级) | 2015-08-28 12:30

恩是的,最近在研究EF,所以在这里卡死了!

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 12:31

我也试过传分页参数的,以前没出现这个问题,不过不是用EF去传参数,下午去试试EF这样做会有什么问题,按道理profiler监控是传了1和10过去,为什么就执行有问题了

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 12:43

@稳稳的河: 静候佳音!!我也再研究研究

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 12:48

@Recluse_Xpy: 你也TOlist的,觉得也不会是延时加载的问题

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 12:58

@稳稳的河: 如果你不Tolist那怎么与数据库交互了,对吧

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 12:59

@稳稳的河: 谢谢回答

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 15:07
0

ParameterName = "@PageIndex"

ParameterName = "@PageSize"

ParameterName = "@TotalCount"

收获园豆:5
Launcher | 园豆:45045 (高人七级) | 2015-08-28 13:04

查出数据还是最后一条

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 13:07

@Recluse_Xpy: 你再把那个图截出来看看。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-08-28 13:33

@Launcher: 谢谢回答

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2015-08-28 15:06
0

我想说你真可怜.这么麻烦而且还在查找错误.moon的分页:

http://files.cnblogs.com/humble/d.pdf

迅捷网络[来送福利] | 园豆:576 (小虾三级) | 2015-08-28 13:48

人家是在学习,EF的分页一句代码完全搞定这一堆代码,根本不需要什么存储过程。

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2015-08-28 14:18

@沧海一杰: 是的,不过做表报很多数据的关联查询,得到报表结果,用EF这样写存储过程也是可行的

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-28 14:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册