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,查看更多内容