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贡献1811条经验 获得超4个赞
ParameterName = "@PageIndex"
ParameterName = "@PageSize"
ParameterName = "@TotalCount"
慕慕森
TA贡献1856条经验 获得超17个赞
我也试过传分页参数的,以前没出现这个问题,不过不是用EF去传参数,下午去试试EF这样做会有什么问题,按道理profiler监控是传了1和10过去,为什么就执行有问题了
SMILET
TA贡献1796条经验 获得超4个赞
@稳稳的河: 不会是between and 的问题吧,改成t.RowIndex>(@PageIndex-1)*@PageSize and t.@RowIndex<=(@PageIndex)*@PageSize你先试试
- 21 回答
- 0 关注
- 970 浏览
添加回答
举报
0/150
提交
取消