zoukankan      html  css  js  c++  java
  • 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

    在使用asp.net core的时候,采用take().skip()分页的时候报如下错误:
    SqlException: 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。
    这个主要是在sql server 2008中,不支持FETCH和NEXT语句(sql server 2012才支持)。
    之后在网上参考了一下其他的文章,最终解决了这个问题,记录一下,方便后来人。
    解决方法:

    public static class DbContextOptionsBuilderExtensions
    {
    /// <summary>
    /// SQL Server specific extension method for Microsoft.EntityFrameworkCore.DbContextOptionsBuilder
    /// </summary>
    /// <param name="optionsBuilder">Database context options builder</param>
    /// <param name="services">Collection of service descriptors</param>
    public static void UseSqlServerWithLazyLoading(this DbContextOptionsBuilder optionsBuilder, IServiceCollection services)
    {
    var nopConfig = services.BuildServiceProvider().GetRequiredService<NopConfig>();

    var dataSettings = DataSettingsManager.LoadSettings();
    if (!dataSettings?.IsValid ?? true)
    return;

    var dbContextOptionsBuilder = optionsBuilder.UseLazyLoadingProxies();
    //'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。
    //在使用asp.net core的时候,采用take().skip()分页的时候报如下错误:SqlException: 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。这个主要是在sql server 2008中,不支持FETCH和NEXT语句(sql server 2012才支持)。
    nopConfig.UseRowNumberForPaging = true;
    if (nopConfig.UseRowNumberForPaging)
    dbContextOptionsBuilder.UseSqlServer(dataSettings.DataConnectionString, option => option.UseRowNumberForPaging());
    else
    dbContextOptionsBuilder.UseSqlServer(dataSettings.DataConnectionString);
    }
    }

  • 相关阅读:
    windows任务计划
    PHP创建多级文件夹
    js正则表达式(不断总结中....)
    js随机改变背景颜色
    提高PHP代码质量36计
    PHP中使用Filter进行数据安全过滤
    CSS颜色代码大全
    正则表达式的修饰符
    创建索引视图
    读取xml中的所有文件名
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/10767901.html
Copyright © 2011-2022 走看看