Как я могу выполнить поиск LIKE с сущностью framework 6 и npgsql?выполнить LIKE-поиск с каркасом сущности и npgsql
Я попытался
1. SQLMethods.Like
queryable.Where(entity => SqlMethods.Like(entity.Name, "%EW%6%"));
, но я получил сообщение
LINQ к Entities не распознает метод «Логическое Like (System.String , System.String) ', и этот метод не может быть переведен в выражение хранилища.
2. Метод расширения LINQ
Затем я попробовал метод расширения LINQ WhereLike
из этого StackOverflow поста: https://stackoverflow.com/a/27153779/1489968
Это работает, но не для всех случаев, потому что это разрезание поиск строки на несколько частей.
queryable.WhereLike(t => t.Name, "%EW%6%"));
превращается в два и соединенных Contains
вызовов, которые трансформируются в двух LIKE
выражений.
SELECT ...
WHERE ... AND
("Extent1"."name" LIKE E'%EU%' AND "Extent1"."name" LIKE E'%6%')
что означает «Все объекты с именем, содержащий„ЕС“и„6“»
Но я хочу, чтобы трансформация в результате запроса, как следующий:
SELECT ...
WHERE ... AND
("Extent1"."name" LIKE E'%EW%6%')
, что означает «Все объекты с названием« ЕС », за которым следует строка, содержащая« 6 »«
не на 100% уверен в этом, но я думаю, что потребуется некоторая конкретная поддержка в провайдере Npgsql EF6, которого в настоящее время нет. Не могли бы вы открыть вопрос об этом (github.com/npgsql/npgsql)? Не уверен, что мы скоро приступим к этому, но ... –