为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

函数式编程 2018-12-07 13:13:36
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("Myproc @PageIndex,@PageSize,@TotalCount output", pageindex, pagesize, totalcount).ToList(); 上述是指定存储过程及相关参数。下面为要执行的存储过程 问题来了:当页码(PageIndex)为1,页容量(PageSize)为10时,也就是要获取前十条的数据,用EF查询时查询出来的却是最后一条数据,与此同时在数据库中单独执行存储过程是能够取出前十条数据的!请问问题出在哪里? 补充:将存储过程中的如下 修改为 between 1 and 10 再用EF调用存储过程却能取到前十条数据。 这是为何?
查看完整描述

21 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

@稳稳的河: 静候佳音!!我也再研究研究
查看完整回答
反对 回复 2018-12-09
?
POPMUISE

TA贡献1765条经验 获得超5个赞

@沧海一杰: 是的,不过做表报很多数据的关联查询,得到报表结果,用EF这样写存储过程也是可行的
查看完整回答
反对 回复 2018-12-09
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

人家是在学习,EF的分页一句代码完全搞定这一堆代码,根本不需要什么存储过程。
查看完整回答
反对 回复 2018-12-09
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

@Launcher: 谢谢回答
查看完整回答
反对 回复 2018-12-09
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

@Recluse_Xpy: 你再把那个图截出来看看。
查看完整回答
反对 回复 2018-12-09
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

查出数据还是最后一条
查看完整回答
反对 回复 2018-12-09
?
波斯汪

TA贡献1811条经验 获得超4个赞

ParameterName = "@PageIndex" ParameterName = "@PageSize" ParameterName = "@TotalCount"
查看完整回答
反对 回复 2018-12-09
?
holdtom

TA贡献1805条经验 获得超10个赞

@稳稳的河: 谢谢回答
查看完整回答
反对 回复 2018-12-09
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

@稳稳的河: 如果你不Tolist那怎么与数据库交互了,对吧
查看完整回答
反对 回复 2018-12-09
?
HUWWW

TA贡献1874条经验 获得超12个赞

@Recluse_Xpy: 你也TOlist的,觉得也不会是延时加载的问题
查看完整回答
反对 回复 2018-12-09
?
LEATH

TA贡献1936条经验 获得超6个赞

会不会是这两个参数写反了!
查看完整回答
反对 回复 2018-12-09
?
慕慕森

TA贡献1856条经验 获得超17个赞

我也试过传分页参数的,以前没出现这个问题,不过不是用EF去传参数,下午去试试EF这样做会有什么问题,按道理profiler监控是传了1和10过去,为什么就执行有问题了
查看完整回答
反对 回复 2018-12-09
?
千万里不及你

TA贡献1784条经验 获得超9个赞

恩是的,最近在研究EF,所以在这里卡死了!
查看完整回答
反对 回复 2018-12-09
?
www说

TA贡献1775条经验 获得超8个赞

用EF调用存储过程没什么,调用分页存储过程,是不太想得通
查看完整回答
反对 回复 2018-12-09
?
SMILET

TA贡献1796条经验 获得超4个赞

@稳稳的河: 不会是between  and 的问题吧,改成t.RowIndex>(@PageIndex-1)*@PageSize and t.@RowIndex<=(@PageIndex)*@PageSize你先试试
查看完整回答
反对 回复 2018-12-09
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

@Recluse_Xpy: 所以我说奇怪呀
查看完整回答
反对 回复 2018-12-09
?
温温酱

TA贡献1752条经验 获得超4个赞

@稳稳的河: 发图片你看 参数传递是正确的        
查看完整回答
反对 回复 2018-12-09
?
慕仙森

TA贡献1827条经验 获得超8个赞

@Recluse_Xpy: 怪异,下午我去测试下看看
查看完整回答
反对 回复 2018-12-09
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

用profiler监控传递过来的页码是1每页大小是10没错
查看完整回答
反对 回复 2018-12-09
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

没看出问题,你用窗口函数排序是OK的,你该看看EF传过来的PageIndex,PageSize的值到底是什么
查看完整回答
反对 回复 2018-12-09
  • 21 回答
  • 0 关注
  • 970 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信