Geo*_*e T 1 sqlite entity-framework case-insensitive sql-like entity-framework-core
目前使用的是.NET Core 2.
我使用LINQ查询类似于:
var peopleInRoseStreet = context.Person
.Include(p => p.Addresses)
.Where(p => p.Addresses.Any(a => a.Text.Contains("rose")));
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
通过使用instr(),虽然PersonAddress.Text列设置为,但比较区分大小写COLLATE NOCASE.如果我修改上面的查询来LIKE代替使用,那么搜索就像我想要的那样不区分大小写.
是否可以强制使用EF LIKE?
您可以使用EF.Functions.LikeEF Core 2.0中的介绍:
var peopleInRoseStreet = context.Person
.Include(p => p.Addresses)
.Where(p => p.Addresses.Any(a => EF.Functions.Like(a.Text, "%rose%")));
Run Code Online (Sandbox Code Playgroud)