首页 > 其他 > 详细

'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

时间:2019-04-25 13:40:12      阅读:322      评论:0      收藏:0      [点我收藏+]
在使用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);
}
}

'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

原文:https://www.cnblogs.com/huangzhen22/p/10767901.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!