假设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,在分页的时候,用的是类似下面的语句:
var query = from m in context.User select m;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都试过了,一样的结果...