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

  • 相关阅读:
    什么样的人适合边打工边创业?
    手机市场分析
    《这个男人来自地球》台词
    关系网成网络盈利模式 LinkedIn网站探秘
    第二届手机应用大赛“金枝奖”评选
    乔布斯的平静让人不寒而栗
    发展移动互联网需理清商业模式
    好想看故乡夏夜的天空
    AdoHelper能否改写成单例模式?
    GMail邀请发放处
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/10767901.html
Copyright © 2011-2022 走看看