首页 > 数据库 >ef6不支持sqlserver 2008的offset语句分页解决

ef6不支持sqlserver 2008的offset语句分页解决

时间:2022-12-27 09:45:06浏览次数:48  
标签:分页 offset sqlserver ef6 NEXT OFFSET ProviderManifestToken SQL 2008

一、 问题

项目中如果使用了EF6,数据库是2008,而分页会收到类似如下的错误提示:

{
  "Depth": 0,
  "ClassName": "",
  "Message": "Incorrect syntax near 'OFFSET'.\r\nInvalid 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以后的新特性。

三、解决

1、在.net Framework中,如果是dbFirst方式,可以通过修改edmx文件进行解决,将ProviderManifestToken属性设置为"2008",在第7行。

ProviderManifestToken="2012" ==> ProviderManifestToken="2008"

2、在.net Core中,通过配置.UseRowNumberForPaging() 即配置用row number SQL关键字进行分页。

public void ConfigureServices(IServiceCollection services) 
{
    services.AddDbContext<ATreeContext> (options =>
        options.UseSqlServer(_config["ConnectionStrings:DefaultConnection"], p => p.UseRowNumberForPaging ()));
}

参考:

https://cloud.tencent.com/developer/ask/sof/55856

https://www.cnblogs.com/atree/p/netcroe-EF-SQL-Server-OFFSET-NEXT-PAGE.html

标签:分页,offset,sqlserver,ef6,NEXT,OFFSET,ProviderManifestToken,SQL,2008
From: https://www.cnblogs.com/superfeeling/p/17007371.html

相关文章

  • kafka的 groupid 与 auto.offset.reset
    前言:通常我们消费kafka数据的时候都会设置两个参数:Propertiesprops=newProperties();props.put("group.id",groupId);props.put("auto.offset.reset",autoOffse......
  • sqlserver/System.Data.SqlClient.SqlException (0x80131904): 用户 'NT AUTHORITY\I
    本人最近学习XAF框架项目,在本地运行可以连接到数据库,发布后无法连接,抛出用户'NTAUTHORITY\IUSR'登录失败问题截图:  问题原因:数据库连接使用的window身份验证时,W......
  • SQLServer2017管理工具的数据库还原操作
    原文链接:https://blog.csdn.net/qq_21209307/article/details/104992642还原数据库选择数据库点击右键选择还原数据库。在弹出的框内选择设备,点击输入框后面的“…”按钮,......
  • C# SQLServer数据库连接并执行类
    SQLHelper.cs usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Linq;......
  • SQLserver查询锁表和解锁
    1、查询锁表语句selectrequest_session_idspid,OBJECT_NAME(resource_associated_entity_id)tableNamefromsys.dm_tran_lockswhereresource_type='OBJECT'......
  • (转载)配置SQLServer,允许远程连接
    需要别人远程你的数据库,首先需要的是在一个局域网内,或者连接的是同一个路由器,接下来就是具体步骤:(一)首先是要检查SQLServer数据库服务器中是否允许远程链接。其具体操作为:......
  • 导出sqlserver数据库中的登录用户和密码信息(2)
    sp_hexadecimal和sp_help_revlogin脚本的版本有点老,有人做了更新,因此记录一下。 相关连接:导出sqlserver数据库中的登录用户和密码信息-abce-博客园(cnblogs.com)......
  • SqlServer 递归查询
    语法--查询字段列表格式为([查询字段名1],[查询字段名2],...),也可用*代替--需要注意的是此处的查询字段列表中的字段与下方内容中定点成员与递归成员查询字段列表内容......
  • sqlserver 处理百万级以上的数据如何提高查询速度
    原文链接:https://zhidao.baidu.com/question/1831461569535027660.html关于mysql处理百万级以上的数据时如何提高其查询速度的方法最近一段时间由于工作需要,开始关注针对M......
  • 盘点现在用的SqlServer 5种分页方式和拉姆达表达式分页,进来看看吧。
    现在基本上大家都在使用各种轮子自带的分页,大家是否还记得sql分页怎么写?今天我们就来盘一盘怎么写和用哪种方式写。欢迎大家评论区讨论。1、ROW_NUMBER()OVER()方式(SQL......