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兼容

相关推荐
安冬的码畜日常1 天前
【JUnit实战3_02】第二章:探索 JUnit 的核心功能(一)
数据库·junit·sqlserver
TiAmo zhang1 天前
SQL Server 2019实验 │ 管理SQL Server的安全性
数据库·sqlserver
合作小小程序员小小店2 天前
Web渗透之身份认证与访问控制缺陷(越权(水平垂直),访问控制(没有验证),脆弱验证(Cookie,JWT,Session等))
安全·web安全·网络安全·asp.net·网络攻击模型
FuckPatience3 天前
HTTP Error 5OO.0- ASPNET Core lIS hosting failure (in-process)
asp.net
FIavor.3 天前
程序包org.junit.jupiter.api不存在这怎么办
数据库·junit·sqlserver
TiAmo zhang3 天前
SQL Server 2019实验 │ 安装及其管理工具的使用
数据库·sqlserver
jackletter4 天前
待补充 五大关系数据库(sqlserver、mysql、oracle、pgsql、sqlite)的列类型:目录
mysql·oracle·sqlserver·sqlite·pgsql·列类型
CsharpDev-奶豆哥4 天前
ASP.NET中for和foreach使用指南
windows·microsoft·c#·asp.net·.net
FuckPatience4 天前
前后端分离项目部署完成后 前后端交互过程
vue.js·asp.net
FuckPatience5 天前
前端Vue 后端ASP.NET Core WebApi 本地调试交互过程
前端·vue.js·asp.net