.NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near

时间:2021-08-25 21:59:34

一、 问题

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

{
  "Depth": 0,
  "ClassName": "",
  "Message": "Incorrect syntax near ‘OFFSET‘.rnInvalid 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 ())); }