selectprovider 分页_oracle Provider先分页后排序的问题?

博客探讨了在使用Oracle Provider进行分页查询时遇到的排序问题。当在EntityFramework中先进行分页再进行排序时,虽然每页内部排序正确,但整体排序并未按照预期的SeqNum字段进行。Oracle默认使用RowID伪列排序,而作者希望实现按SeqNum排序,以确保每页的SeqNum范围正确。目前尝试的Oracle Provider Beta1和Beta2都无法解决此问题。
摘要由CSDN通过智能技术生成

假设User表数据为:

IDUsernameCreateTimeSeqNum

Guid生成1111900/1/13 16:19 6

Guid生成1121900/1/13 16:19 3

Guid生成1131900/1/13 16:19 2

Guid生成1141900/1/13 16:19 5

Guid生成1151900/1/13 16:19 4

Guid生成1161900/1/13 16:19 1

Guid生成1171900/1/13 16:19 7

Guid生成1181900/1/13 16:19 9

Guid生成1191900/1/13 16:19 8

Guid生成1201900/1/13 16:19 10

Guid生成1211900/1/13 16:19 16

Guid生成1221900/1/13 16:19 13

Guid生成1231900/1/13 16:19 14

Guid生成1241900/1/13 16:19 12

Guid生成1251900/1/13 16:19 11

Guid生成1261900/1/13 16:19 17

Guid生成1281900/1/13 16:19 20

Guid生成1291900/1/13 16:19 19

Guid生成1301900/1/13 16:19 15

Guid生成1311900/1/13 16:19 18

测试了EntityFramework,在分页的时候,用的是类似下面的语句:

C# codevarquery=frommincontext.Userselectm;query=query.OrderBy(item=>item.SeqNum);//这里得出的query是能够正常按照SeqNum排序的query=query.Skip(skip).Take(take);//skip为跳过的记录数(假设为0),take为要取的记录数(假设为10)//这里得出的query每页是能正常按SeqNum排序,但总体并不会按SeqNum排序

结果可能如下:

第一页:

IDUsernameCreateTimeSeqNum

Guid生成1161900/1/13 16:191

Guid生成1131900/1/13 16:192

Guid生成1151900/1/13 16:194

Guid生成1111900/1/13 16:196

Guid生成1171900/1/13 16:197

Guid生成1191900/1/13 16:198

Guid生成1181900/1/13 16:199

Guid生成1231900/1/13 16:1914

Guid生成1301900/1/13 16:1915

Guid生成1311900/1/13 16:1918

第二页:

IDUsernameCreateTimeSeqNum

Guid生成1121900/1/13 16:193

Guid生成1141900/1/13 16:195

Guid生成1201900/1/13 16:1910

Guid生成1251900/1/13 16:1911

Guid生成1241900/1/13 16:1912

Guid生成1221900/1/13 16:1913

Guid生成1211900/1/13 16:1916

Guid生成1261900/1/13 16:1917

Guid生成1291900/1/13 16:1919

Guid生成1281900/1/13 16:1920

Oracle默认应该是根据一个伪列RowID来排序的。另外还有个RowNum。

怎样才能让排序变正常呢?

第一页的SeqNum应该是1-10,第二页的SeqNum应该是11-20.

Oracle Provider Beta1和Beta2都试过了,一样的结果...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值