【问题标题】:EF6: FullText Search not working with multiple WHEREEF6:全文搜索不适用于多个 WHERE
【发布时间】:2016-11-25 14:27:02
【问题描述】:

所以我已经按照article 中的描述设置了一个 DB 拦截器。

有效的代码:

var ft = FtsInterceptor.Fts('something');
var queryable1 = db.Sometable.Where(x=> x.Id > 30);
var queryable2 = db.Sometable.Where(x=> x.Name != null && x.Name.Contains(ft));
var final = (from q1 in queryable1 join q2 in queryable2 on q1.Id equals q2.Id select q1).ToList();

无效的代码:

var ft = FtsInterceptor.Fts('something');
var queryable = db.Sometable.Where(x=> x.Id > 30);
queryable = queryable.Where(x=> x.Name != null && x.Name.Contains(ft));
var final = queryable.ToList();

我没有收到任何错误,但结果完全错误。我没有得到多个 WHEREwhere 的结果,因为 JOIN 按预期工作。

【问题讨论】:

  • 您确定 Sometable.Name 中的内容吗?我想,最好检查一下是否为 NullOrEmpty
  • 我更新了问题,添加NULL检查条件

标签: c# sql-server entity-framework linq full-text-search


【解决方案1】:

您是否 100% 确定 Sometable.Name 始终包含数据?您可能希望将该行设为var queryable2 = db.Sometable.Where(x=> (x.Name ?? "").Contains(ft));,这样就不会出现空值。

【讨论】:

  • 我尝试添加空检查,是的,错误消失了,但我没有得到多个WHERE的任何结果
猜你喜欢
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多