System.Data.SqlClient.SqlException: 'OFFSET' 附近有语法错误

本文解决在使用Entity Framework与SQL Server 2008进行分页时遇到的 OFFSET 语法错误问题,通过调整EDMX文件中的ProviderManifestToken值或在EF Core中使用特定配置,确保在不同版本的SQL Server上代码的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况说明:测试环境下使用的sql server 2017,但是客户正式服务器数据库使用的是sql server 2008 R2,于是,在测试环境正常的代码,在正式环境下,出现错误。
这里使用的是DBFirst方式

错误如下:
System.Data.SqlClient.SqlException: ‘OFFSET’ 附近有语法错误

这个问题是使用EF分页作用在Sql server 2008上时的错误问题
即EF中的.Skip(…).Take(…)
解决办法:

  1. 首先找到edmx文件。
    2.把下面的2012的值替换为2008即可。
    ProviderManifestToken=“2012” ==> ProviderManifestToken=“2008”

上面验证可行

说明:EF Core的方式没有验证,只是猜测可行
在使用EF Core 与Sql server 2008遇到这个问题时,可以这样

services.AddDbContext(options => options.UseSqlServer(connection,b=>b.UseRowNumberForPaging()));

资料参考:
https://stackoverflow.com/questions/29995502/paging-with-entity-framework-7-and-sql-server-2008
https://www.cnblogs.com/yhdkzy/p/7919426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值