EF6:全文搜索不能与多个WHERE一起使用 [英] EF6: FullText Search not working with multiple WHERE
本文介绍了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 WHERE
where 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屋!
查看全文