Я хочу полностью смоделировать поведение SQL Like в Linq-to-Entities.
Я не хочу использовать StartsWith, EndsWith или Contains, которые не работают должным образом, когда оригиналзапрос:
t_test LIKE '%';
Я также не могу использовать методы Linq-to-SQL в SqlFunctions, потому что я не всегда использую среду SQL поверх Entity (особенно при тестировании моих репозиториев с использованием фиктивного DbContext).
В моем основном случае Entity подключен к базе данных Oracle SQL.
До сих пор я пробовал эту лямбду в своем предложении Where (я использую '*' в качестве escape-символа вместо '%'):
x => (testName.StartsWith("*") && testName.EndsWith("*") &&
x.Name.Contains(testName.Replace("*", "")) ||
testName.StartsWith("*") &&
x.Name.EndsWith(testName.Replace("*", "")) ||
testName.EndsWith("*") &&
x.Name.StartsWith(testName.Replace("*", ""))))
Сущность перевести этов следующем запросе Oracle SQL:
SELECT
"Extent1"."KEY" AS "KEY",
"Extent1"."NAME" AS "NAME",
FROM "T_NAME" "Extent1"
WHERE ((('*' LIKE '*%') AND ('*' LIKE '%*') AND (( NVL(INSTR("Extent1"."NAME", REPLACE('*', '*', '')), 0) ) > 0)));
, который ничего не возвращает.
Любая подсказка или помощь будут великолепны.