作者:hypothesis82235 | 来源:互联网 | 2023-01-11 19:23
目前使用的是.NET Core 2.
我使用LINQ查询类似于:
var peopleInRoseStreet = context.Person
.Include(p => p.Addresses)
.Where(p => p.Addresses.Any(a => a.Text.Contains("rose")));
EF似乎将此转换为:
SELECT "p".*
FROM "Person" AS "p"
WHERE EXISTS (
SELECT 1
FROM "PersonAddress" AS "a"
WHERE (instr("a"."Text", 'rose') > 0) AND ("p"."Id" = "a"."person_id"))
ORDER BY "p"."Id"
通过使用instr()
,虽然PersonAddress.Text列设置为,但比较区分大小写COLLATE NOCASE
.如果我修改上面的查询来LIKE
代替使用,那么搜索就像我想要的那样不区分大小写.
是否可以强制使用EF LIKE
?
1> Ivan Stoev..:
您可以使用EF.Functions.Like
EF Core 2.0中的介绍:
var peopleInRoseStreet = context.Person
.Include(p => p.Addresses)
.Where(p => p.Addresses.Any(a => EF.Functions.Like(a.Text, "%rose%")));