升级到.NET8 LINQ Where关键字 'WITH' 附近有语法错误解决方案|C/S开发框架
因为 .NET8 优化了 Contains 子句的 SQL 翻译,之前的 IN 查询有性能问题,但这个优化只有 SQL Server 2016 及以上版本的数据库支持,否则就会报这个错。
而且即便数据库引擎版本达到,数据库本身的兼容性设置如果低于 SQL Server 2016 的话,也会报错。
解决方案1
安装 SQL Server 2016 或更高版本的数据库,或者修改数据库本身的兼容性设置到 SQL Server 2016 或更高
解决方案2
在代码中增加兼容性配置项:
public DbContextOptions UseDatabase(DbContextOptionsBuilder builder, DbConnection dbConnection)
{
//UseCompatibilityLevel(120),解决.NET8 LINQ Where关键字 'WITH' 附近有语法错误
builder.UseSqlServer(dbConnection, x => x.UseNetTopologySuite().UseCompatibilityLevel(120));
return builder.Options;
}
扫一扫加作者微信