.NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the

Posted atree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the相关的知识,希望对你有一定的参考价值。

一、 问题

最近.Net Core程序部署到服务器,采用EF6。本地数据库是SQL server 2016,服务器数据库安装的是SQL server 2008 R2,在用到分页查询时报错如下:


  "Depth": 0,
  "ClassName": "",
  "Message": "Incorrect syntax near ‘OFFSET‘.\\r\\nInvalid usage of the option NEXT in the FETCH statement.",
  "Source": "Core .Net SqlClient Data Provider",

二、原因

通过问题描述可以分析是数据库SQL server 2008 R2版本SQL语句不支持关键字OFFSET,NEXT,因为这两个关键字是SQL server 2012以后的新特性。

如果你看到这段文字,说明您正使用RSS阅读或转自《一棵树-博客园》,原文地址:https://www.cnblogs.com/atree/p/netcroe-EF-SQL-Server-OFFSET-NEXT-PAGE.html

三、解决办法

通过配置.UseRowNumberForPaging() 即配置用row number SQL关键字进行分页。在Startup.cs中,添加代码如下:

public void ConfigureServices(IServiceCollection services) 
services.AddDbContext
<ATreeContext> (options => options.UseSqlServer(_config["ConnectionStrings:DefaultConnection"], p => p.UseRowNumberForPaging ()));

 

以上是关于.NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the的主要内容,如果未能解决你的问题,请参考以下文章

.NET使用一行命令轻松生成EF Core项目框架

.NET5中的EF Core数据层仓储模式

.net ef core 检查是不是插入成功

.net ef core 检查是不是插入成功

ASP MVC 应用程序中的列加密与使用 .net Core / EF Core 的 SQL Server 2016

面向具有 EF6 和 Identity 的完整框架的 ASP.NET Core