ef core $ 附近有语法错误_ef core contains $符近语法错
一、ef core contains $符近语法错
升级到 .net 8 后使用 ef core 查询遇到错误:Microsoft.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near '$'. 附近的语法不正确
是因为 .net 8 优化了 Contains 子句的 SQL 翻译,之前的 IN 查询有性能问题
但这个优化只有 SQL Server 2016 及以上版本的数据库支持,否则就会报这个错
而且即便数据库引擎版本达到,数据库本身的兼容性设置如果低于 SQL Server 2016 的话,也会报错
二、解决方案:
解决方案1:
安装 SQL Server 2016 或更高版本的数据库,或者修改数据库本身的兼容性设置到 SQL Server 2016 或更高
解决方案2:
在代码中增加兼容性配置项:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseSqlServer(@"<CONNECTION STRING>", o => o.UseCompatibilityLevel(120));
更多: