所以,我有这样的lambda表达式,它工作得很好对实体框架的字符串大小限制包含条款
list = list.Where(x => x.ListaDocumentoCaixa.Any(d => d.Observacao.Contains(term.Trim())));
我必须补充,这列是varchar(6000)
场。到目前为止,正如我所提到的那样,这一直工作得很好,但最近我遇到了一个问题。似乎如果搜索的词语从字符串的位置4001开始,则查询无法将任何内容返回给我。
一些debbuging后,我发现然而,这评价了实体框架生产
-- p__linq__0: 'maria stela gonsa' (Type = String, Size = 4000)
然后经过一番研究,我发现这是实体的共同行为的查询,我不能有这样的限制应用程序。我的问题是:有没有办法改变这种行为?如果可能,我非常希望避免以纯文本的形式编写此查询,并使用ExecuteQuery
执行此操作。
在此先感谢您的帮助!
你有没有试过使用'任何'的'第一'巴德?它会增加你的表演。 – PedroSouki
我遇到的问题实际上并不是性能,问题是Entity Framework不会在我的领域的4000位以外进行搜索。性能方面,我根本没有任何问题 –
但这只意味着'term'不能超过4000.我可以在一个超过4000个字符的'nvarchar(max)'字段中进行搜索,并且查询被翻译为' LIKE'。你在哪个数据库(提供者+版本)? –