EF6:全文搜索不能与多个WHERE一起使用 [英] EF6: FullText Search not working with multiple WHERE

查看:593
本文介绍了EF6:全文搜索不能与多个WHERE一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我已经设置了一个数据库拦截器,如本文章所述。

可以运作的代码:

  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 =(从q1在queryable1中连接q2在q1上的queryable2中等于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();

我没有收到任何错误,但结果完全关闭。我没有得到多个 WHERE 其中 JOIN 按预期工作的结果。

你是否100%确定Sometable.Name总是包含数据?您可能想要将该行读为 var queryable2 = db.Sometable.Where(x =>(x.Name ??).Contains(ft)); 所以永远不会有空值。


So I have setup an DB interceptor as described in this article.

Code that works:

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();

Code that doesn't work:

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();

I don't get any errors but the results are completely off. I get no results with multiple WHEREwhere as JOIN works as expected.

解决方案

Are you 100% certain that Sometable.Name always contains data? You might want to make that line read var queryable2 = db.Sometable.Where(x=> (x.Name ?? "").Contains(ft)); so that there is never a null value.

这篇关于EF6:全文搜索不能与多个WHERE一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆