博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EntityFrameworkCore 分页问题
阅读量:6603 次
发布时间:2019-06-24

本文共 849 字,大约阅读时间需要 2 分钟。

  hot3.png

场景重现

使用 EntityFrameworkCore 连接 SQL Server 2008 执行.Skip().Take()分页查询时出现如下异常:

SqlException: 'OFFSET' 附近有语法错误。在 FETCH 语句中选项 NEXT 的用法无效。

异常原因

SQL Server 中有几种实现分页的方式,但是有版本限制.

  • top not in 方式 - SQL Server 2005 新增的
  • ROW_NUMBER() OVER()方式 - SQL Server 2008 新增的
  • offset fetch next 方式 - SQL Server 2012 新增的

而在EntityFramworkCore中默认使用的是最新的offset fetch方式,

而我使用的 SQL Server 2008 不支持该关键字, 自然就异常.

解决办法

这是 EntityFrameworkCore 中的原话.

Use a ROW_NUMBER() in queries instead of OFFSET/FETCH. This method is backwards-compatible to SQL Server 2005. public virtual void UseRowNumberForPaging();

于是乎,我们指定下 EntityFramworkCore 中使用的分页模式即可.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){    optionsBuilder.UserSqlServer("yourConnectionString", options => {        options.UseRowNumberForPaging();    });}

转载于:https://my.oschina.net/taadis/blog/890232

你可能感兴趣的文章
云计算学习1
查看>>
Elasticsearch教程
查看>>
CAS的Session两秒挂掉?--解决退出后登录,页面刷新的问题
查看>>
Android的SDK与ADT不匹配问题
查看>>
JFreeChart全面讲解
查看>>
chrome 升级 v.34 后 activiti5.14 Modeler 出错
查看>>
SOA(面向服务框架)
查看>>
Perl Modules about File
查看>>
字幕和视频合成软件
查看>>
Java生成验证码
查看>>
git 常用命令 -- 菜鸟的笔记
查看>>
sturts漏洞
查看>>
java静态方法中读取类路径
查看>>
UNIX网络编程(第三版 ) 测试代码 7.2
查看>>
【原创】数组完整篇 / 基本操作/ 进阶 / 遍历 / 实例 / 拓展 / 取 / 赋
查看>>
linux 挂载samba盘
查看>>
pitfall fields
查看>>
Hadoop实战读书笔记(3)
查看>>
策略模式
查看>>
2012-2013 微软商业智能大调研分析报告
查看>>