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

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调用存储过程却能取到前十条数据。 这是为何?
函数式编程
浏览 976回答 21
21回答

LEATH

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

MMMHUHU

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

繁华开满天机

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

慕仙森

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

温温酱

@稳稳的河: 发图片你看 参数传递是正确的        

繁星淼淼

@Recluse_Xpy: 所以我说奇怪呀

SMILET

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

www说

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

千万里不及你

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

慕慕森

我也试过传分页参数的,以前没出现这个问题,不过不是用EF去传参数,下午去试试EF这样做会有什么问题,按道理profiler监控是传了1和10过去,为什么就执行有问题了
打开App,查看更多内容
随时随地看视频慕课网APP