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

相关推荐
[email protected]13 小时前
ASP.NET Core SignalR 身份认证集成指南(Identity + JWT)
后端·中间件·asp.net·.netcore
[email protected]1 天前
ASP.NET Core SignalR的基本使用
后端·asp.net·.netcore
ArabySide1 天前
【EF Core】 EF Core 批量操作的进化之路——从传统变更跟踪到无跟踪更新
数据库·.net·efcore
[email protected]2 天前
Asp.Net Core FluentValidation校验框架
后端·asp.net·.netcore
[email protected]2 天前
Asp.Net Core 如何配置在Swagger中带JWT报文头
后端·asp.net·.netcore
[email protected]2 天前
Asp.Net Core SignalR的分布式部署
分布式·后端·asp.net·.netcore
cici158742 天前
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
开发语言·c#·asp.net
[email protected]3 天前
Asp.Net Core 通过JWT版本号实现JWT无法提前撤回的问题
后端·中间件·asp.net·.netcore
[email protected]3 天前
Asp.Net Core 托管服务
后端·asp.net·.netcore