efcore 连接SqlServer2008R2报错:'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效
用的是EF Core 6 ,连接SqlServer 2008R2时,生成的分页方法会报错,只需要指定ProviderName时加上版本号就行:Microsoft.EntityFrameworkCore.SqlServer@2008,高于2008版本就按默认就行:providerName:default 或者providerName:Microsoft.EntityFrameworkCore.SqlServer
解决过程:
从AddDbPool一步步跟踪上去,会发现在Microsoft.Extensions.DependencyInjection里面,根据版本2008加了句:dbContextOptionsBuilder.ReplaceService<IQueryTranslationPostprocessorFactory, SqlServer2008QueryTranslationPostprocessorFactory>();
这个SqlServer2008QueryTranslationPostprocessorFactory是国外一个高手改的,已经被微软官方加到Microsoft.Extensions.DependencyInjection里了,不需要单独引用他的包(EntityframeCore.UseRowNumberForPaging)了!
修改后代码如下:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?