Linq to Entities использует ObjectQuery, который реализует IQueryable. Я обычно использую методы IQueryable для фильтрации своих данных, но сегодня мне нужно было создать специальный оператор LIKE. Фреймворк продолжает думать, что он умный и «ускользает» от моего подстановочного знака «%» с тильдой, что сделало мое специальное утверждение LIKE недействительным. Поэтому, покопавшись, я обнаружил, что ObjectQuery имеет перегрузку для метода Where, которая позволяет передавать строку вместе с ObjectParameters. Я сделал это, но он не выполняется как IQueryable. Когда я запускаю приложение, после нажатия этого кода ничего не происходит. Никаких ошибок и обращений к базе данных тоже нет, поэтому я знаю, что созданный мной запрос фактически не выполняется.
Как мне казнить этого щенка?
public IQueryable<tbl_Path> GetPathsByWildCardSearch(string searchTerm)
{
return this.ObjectContext.tbl_Path
.Where("FullPath NOT LIKE @p0 and FullPath LIKE @p1",
new ObjectParameter("p0", string.Format("%{0}%{1}%", searchTerm, tbl_Path.PathSeperator)),
new ObjectParameter("p1", string.Format("%{0}%", searchTerm)));
}