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);
    }
    }

  • 相关阅读:
    poj3905 2sat!
    poj3648,2-sat求解
    poj2723 2sat判断解+二分
    hdu3622 2-sat问题,二分+判断有无解即可。
    poj2767,单向连通图判定,缩点+重新建图+新图DFS
    poj2186 求有向图G中所有点都能到达的点的数量
    poj2553 有向图缩点,强连通分量。
    poj 1236+hdu2767 有向图 缩点+看度数(tarjan)
    poj3694+hdu2460 求桥+缩点+LCA/tarjan
    dfs + 最小公倍数 Codeforces Round #383 (Div. 2)
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/10767901.html
Copyright © 2011-2022 走看看