You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写可转换为T-SQL CONTAINS谓词的EF Core查询

错误原因

你当前写法的问题是手动为搜索参数额外添加了外层单引号,EF Core生成SQL时会自动为字符串参数加引号,手动多加的单引号会导致最终生成的SQL语法不符合全文检索CONTAINS函数的参数要求。


正确实现代码

直接传入带双引号的搜索词即可,不需要额外拼接单引号:

// 固定搜索前缀写法
query.Where(p => EF.Functions.Contains(p.FirstName, "\"joh*\""));

如果需要动态传入搜索前缀,字符串插值写法如下:

string searchPrefix = "joh";
query.Where(p => EF.Functions.Contains(p.FirstName, $"\"{searchPrefix}*\""));

注意事项

  • 需确保你使用的EF Core数据库Provider原生支持全文检索函数,SqlServer场景下安装Microsoft.EntityFrameworkCore.SqlServer包即可直接使用EF.Functions.Contains
  • 需提前为表和对应字段配置全文索引,你已完成该配置可忽略此条

内容的提问来源于stack exchange,提问作者sean717

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:09