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

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 可有其他解决方案?

慕的地6264312
浏览 673回答 10
10回答

明月笑刀无情

加一个自增字段用来排序

holdtom

一般是加一个排序字段

qq_花开花谢_0

你是让他默认排序么?

慕桂英546537

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

郎朗坤

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

月关宝盒

这个肯定是的  既然是排序排序  肯定是要有顺序才能排 你没有能排序的字段  自然是设计问题 增加一个自增字段就可以了  以自增来排序

Cats萌萌

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

茅侃侃

最近也遇到了这个问题,
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server