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

相关推荐
大熊程序猿3 天前
ASP.NET Core 认证授权:JWT与OAuth2实战
后端·asp.net
满昕欢喜3 天前
SQL Server的概述与安装
数据库·sqlserver
.NET修仙日记3 天前
.NET EFCore批量插入性能优化实战:30秒 → 0.5秒
性能优化·c#·.net·.netcore·微软技术·efcore·踩坑实录
xuefuhe3 天前
SQL Server: WITH(NOLOCK)=READUNCOMMITTED
sqlserver
超級二蓋茨4 天前
asp.net core中JwtBearerEvents中几个事件的生命周期
java·服务器·asp.net
康乾隆4 天前
SQL Server Always On 重新添加从库步骤
数据库·sqlserver
编码者卢布5 天前
【Azure Developer】ASP.NET Framework 4.8 集成 Azure Application Insights SDK 完整指南
microsoft·asp.net·azure
祀爱6 天前
定时任务之BackgroundService的详细教程
后端·c#·asp.net
菜鸟上路_lbz6 天前
sqlserver存储过程查询缓慢锁表分析
数据库·sqlserver
祀爱6 天前
Asp.net core+ Layui 项目中编辑按钮传递数据的方法
前端·c#·asp.net·layui