zoukankan      html  css  js  c++  java
  • .NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement

    一、 问题

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

    {
      "Depth": 0,
      "ClassName": "",
      "Message": "Incorrect syntax near 'OFFSET'.
    Invalid 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 ())); }
  • 相关阅读:
    微信运营
    1.数据库&SQL语言
    16.线程
    15.IO流
    14.异常
    13.集合
    12.常用类
    11.String类-StringBuffer类、StringBuilder类
    10.Object类-包装类-内部类
    9.接口
  • 原文地址:https://www.cnblogs.com/atree/p/netcroe-EF-SQL-Server-OFFSET-NEXT-PAGE.html
Copyright © 2011-2022 走看看