因为EF不支持开箱即用的全文搜索(据我所知)使用sql命令执行查询
var objctx = (ctx as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext;
query = objctx.CreateQuery<Candidate>(@"select
c.CandidateId,
c.ProjectId,
c.CreateDate,
c.CreatedBy
c.DisplayName
from candidate as c
where (contains(c.DisplayName, @pattern))",
new ObjectParameter("pattern", displayNameFilter));
问题来自我甚至无法想象的地方。
EF,形成最终请求,用contains
函数包装替换运算符charindex()
,以及case-when-bit-convert
构造。
怎么办?如何强制EF离开contains
而不被重写?
答案 0 :(得分:1)
var query = @"select c.CandidateId,c.ProjectId, c.CreateDate, c.CreatedBy c.DisplayName from candidate as c where (contains(c.DisplayName, @p0))";
var result = dbContext.Database.SqlQuery<T>(query, displayNameFilter).ToList();
T
是您的结果类型。
SqlQuery()docs:https://msdn.microsoft.com/en-us/library/jj592907%28v=vs.113%29.aspx