当前位置:  开发笔记 > 数据库 > 正文

由Entity Framework生成的SQL用于字符串匹配

如何解决《由EntityFramework生成的SQL用于字符串匹配》经验,为你挑选了0个好方法。

给定针对EF数据上下文的linq查询:

var customers = data.Customers.Where(c => c.EmailDomain.StartsWith(term))

你希望它能像这样产生SQL,对吗?

SELECT {cols} FROM Customers WHERE EmailDomain LIKE @term+’%’

嗯,实际上,它确实是这样的:

SELECT {cols} FROM Customer WHERE ((CAST(CHARINDEX(@term, EmailDomain) AS int)) = 1)

你知道为什么吗?

另外,将Where选择器替换为:

c => c.EmailDomain.Substring(0, term.Length) == term

它的运行速度提高了10倍,但仍会产生一些非常令人讨厌的SQL.

注意: Linq to SQL正确地将StartsWith转换为Like {term}%,并且nHibernate具有专用的LikeExpression.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有