EntityFrameworkCore 分页问题
场景重现
使用 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();
});
}
EntityFrameworkCore 分页问题的更多相关文章
- 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore
异常环境: netcore版本:.Net Core 2.1 efcore版本:Microsoft.EntityFrameworkCore.SqlServer 2.1.1 sql sqlserver 版 ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组
Sorting, filtering, paging, and grouping 7 of 8 people found this helpful By Tom Dykstra The Contoso ...
- 学习ASP.NET Core Razor 编程系列十九——分页
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- EFCore+Mysql仓储层建设(分页、多字段排序、部分字段更新)
前沿 园子里已有挺多博文介绍了EFCore+Mysql/MSSql如何进行使用,但实际开发不会把EF层放在Web层混合起来,需要多个项目配合结构清晰的进行分层工作,本文根据个人实践经验总结将各个项目进 ...
- .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
一. 问题说明 最近.Net EF core 程序部署到服务器,服务器数据库安装的是SQL server 2008 R2,我本地用的的是SQL server 2014,在用到分页查询时报错如下: H ...
- Message "'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。" 解决办法 EntityFrameworkCore
由于新版的EntityFrameworkCore默认使用的是SqlServer2012或以上版本的Sql语法分页,来提高性能. 所以使用数据库的版本如果低于2012(如Sqlserver2008)需要 ...
- Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束
如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”, 请先检查你的DbContext中UseOr ...
- 学习ASP.NET Core(08)-过滤搜索与分页排序
上一篇我们介绍了AOP的基本概览,并使用动态代理的方式添加了服务日志:本章我们将介绍过滤与搜索.分页与排序并添加对应的功能 注:本章内容大多是基于solenovex的使用 ASP.NET Core 3 ...
- 使用.NET 6开发TodoList应用(13)——实现查询分页
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 查询中有个非常常见的需求就是后端分页,实现的方式也不算复杂,所以我们本文仅仅演示一个后端查询分页的例子. 目标 实现分页查询返 ...
- .Net/C#分库分表高性能O(1)瀑布流分页
.Net/C#分库分表高性能O(1)瀑布流分页 框架介绍 依照惯例首先介绍本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本. ...
随机推荐
- ForkJoin全解2:forkjoin实际工作流程与实现
1.相关概念解释 1.1 "内部"和外部 当一个操作是在非ForkjoinThread的线程中进行的,则称该操作为外部操作.比如我们前面执行pool.invoke,invoke内又 ...
- 消息中间件之-Kafka相关知识
前言 本篇文章是我基于拉勾kafka课程所作的笔记,包括Kafka基本架构.核心概念.生产者解析.消费者解析.存储.事务.一致性保证等等,希望对大家有所帮助. 一.kafka架构 Kafka基础知识 ...
- Redis(3)---Redis事务|主从复制
Redis事务 Redis 通过 MULTI .EXEC. DISCARD 和 WATCH 四个命令来实现事务功能. MULTI :标记一个事务块的开始. EXEC: 执行所有事务块内的命令. DI ...
- 常见的HTML特殊字符:对钩与叉号,五角星
表示"对钩","叉号"的特殊转义符号汇总: 对钩符号 编码 描述 叉号符号 编码 描述 ✓ ✓ CHECK MARK 手写体对钩(细) ✗ ✗ BALLOT X ...
- 基于C#实现多线程启动停止暂停继续
大家好!我是付工. 大部分初学者在学习C#上位机编程时,多线程是一个很难逾越的鸿沟,不合理地使用多线程,会导致经常出现各种奇怪的问题,这也是很多初学者不敢使用多线程的原因.但是在实际开发中,多线程是一 ...
- ctfshow--web10 php代码逻辑漏洞with rollup注入
dirsearch没有扫到文件 查看源代码发现 有个style.css文件点击查看 查看index.phps代码 又是代码审计 点击查看代码 <?php $flag=""; ...
- SourceTree SSH第一次登录需要交互确认的问题
问题 在SourceTree SSH配置完ssh之后向上提交代码的时候发现: The server's host key is not cached in the registry. You have ...
- 深入理解 Future, CompletableFuture, ListenableFuture,回调机制
深入理解 Future, CompletableFuture, ListenableFuture,回调机制 本文禁止转载. 本文从设计思想.具体实现等角度分析了 Future.CompletableF ...
- RocketMQ实战—1.订单系统面临的技术挑战
大纲 1.一个订单系统的整体架构.业务流程及负载情况 2.订单系统面临的技术问题一:下订单的同时还要发券.发红包.Push推送等导致性能太差 3.订单系统面临的技术问题二:订单退款时经常流程失败导致无 ...
- 使用Docker编译安装运行Doris
一.编译源码 (1)拉取编译镜像docker pull apache/incubator-doris:build-env-1.2 (2)Mac电脑上拉取源码git clone https://gith ...