问题
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.
回答1:
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.
来源:https://stackoverflow.com/questions/40807159/ef6-fulltext-search-not-working-with-multiple-where