EFcore8和Sql Server 2014冲突

项目升级到EFCore8之后,所有的Contains方法都报错

报错的linq语句示例:

cs 复制代码
_db.SysModules.Where(x => moduleIds.Contains(x.Id)).AsNoTracking().ToListAsync()

用log4net记录的报错内容如下

ERROR 关键字 'WITH' 附近有语法错误。 关键字 'with' 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾。

这是因为EFCore版本太高,SqlServer版本太低。

解决方法:

1、升级SqlServer

2、在DbContext配置项加上以下代码

cs 复制代码
optionsBuilder.LogTo(Console.WriteLine, LogLevel.Information).UseSqlServer(sqlStr, o => o.UseCompatibilityLevel(120)); 

其中最关键的是o => o.UseCompatibilityLevel(120)

可以让EFCore和低版本SqlServer兼容

相关推荐
云草桑12 小时前
.net AI开发04 第八章 引入RAG知识库与文档管理核心能力及事件总线
数据库·人工智能·microsoft·c#·asp.net·.net·rag
zhangzeyuaaa19 小时前
SQL Server删除重复数据
运维·sqlserver
雪碧聊技术3 天前
DBeaver连接sql server数据库时,提示驱动版本不合适
数据库·sqlserver·dbeaver·更换驱动·修改java.security
雷工笔记3 天前
数据库|SQLServer2025安装教程
数据库·sqlserver
梁正雄6 天前
linux服务-麒麟10安装sqlserver
linux·运维·sqlserver
贾修行6 天前
IIS 作为反向代理:为 ASP.NET Core Kestrel 应用保驾护航
后端·iis·asp.net·反向代理·arr·url 重写规则
齐 飞6 天前
SQL server使用MybatisPlus查询SQL加上WITH (NOLOCK)
数据库·mysql·sqlserver
William_cl6 天前
C# ASP.NET强类型视图:让 UI 数据交互告别 “猜谜游戏“
ui·c#·asp.net
曲幽7 天前
从0到1掌握SQL Server可编程性:让数据自己动起来
sql·sqlserver·delete·insert·function·update·trigger·procedure