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

EF中分页查询的坑,你知道吗?

EF中分页查询的坑,你知道吗?

慕的地6264312 2018-12-06 20:20:42
EF6.0 数据库Sql Server2008 排序生成的sql 是使用了 RowNumber 没有任何问题。 EF6.0 数据库Sql Server2012 排序生成的sql 是使用了 OFFSET/FETCH NEXT,一般情况也是没有问题的。不过有个特殊情况,如果排序字段值是一样的,就没法分页了。如:(如果Name值一样的话) SELECT * FROM [dbo].[Assets] AS [Extent1] ORDER BY [Extent1].[Name] DESC OFFSET 11 ROWS FETCH NEXT 4 ROWS ONLY;   请问大神有遇到这种情况吗? 除了修改排序字段、增加唯一字段排序、手写RowNumber 可有其他解决方案?
查看完整描述

10 回答

?
明月笑刀无情

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

加一个自增字段用来排序

查看完整回答
反对 回复 2019-01-07
?
holdtom

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

一般是加一个排序字段

查看完整回答
反对 回复 2019-01-07
?
qq_花开花谢_0

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

你是让他默认排序么?

查看完整回答
反对 回复 2019-01-07
?
慕桂英546537

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

不是,本来使用创建时间排序。(可是有种情况,导入的数据创建时间都是一样的。导致无法分页。

查看完整回答
反对 回复 2019-01-07
?
郎朗坤

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

你可以批量修改下时间,时间+行号,这样子时间就区分了

查看完整回答
反对 回复 2019-01-07
?
月关宝盒

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

这个肯定是的  既然是排序排序  肯定是要有顺序才能排

你没有能排序的字段  自然是设计问题

增加一个自增字段就可以了  以自增来排序

查看完整回答
反对 回复 2019-01-07
?
Cats萌萌

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

我也遇到了这个问题,加个主键排序就可以了

查看完整回答
反对 回复 2019-01-07
?
茅侃侃

TA贡献1842条经验 获得超21个赞

最近也遇到了这个问题,

查看完整回答
反对 回复 2019-01-07
  • 10 回答
  • 0 关注
  • 672 浏览
慕课专栏
更多

添加回答

举报

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