Simple.Data 分页必须依赖数据表的主键,否则抛异常 AdoAdapterException 【Cannot apply paging to table with no primary key.】
基于数据查询性能考虑,我们会建立视图简化查询语句,也就是创建 view 对象,但视图是无法拥有主键,所以提出以下方案。
参考原有分页方法,为表建立排序字段 【#】123ROW_NUMBER() OVER({0}) AS [_#_] // {0} 字段名称 + 排序// CreateTime 降序ROW_NUMBER() OVER(CreateTime desc) AS [_#_]
因此视图的建立应该指派其排序方式,分页编码使用如下:12var pageRange = (offset + 1).to(offset + limit);expression = expression.And(limit > 0, () => view["_#_"] == pageRange);
但此方法不可添加查询条件,否则排序结果因筛选数据而导致失效
特殊情况
between and 排序功能失效,原因未能确认
暂时只能使用 Linq 重新排序,要么修改 Simple.Data 分页处理,在条件后增加 order by