Итак, в моем последнем посте я спрашивал, как создать динамический поисковый фильтр с использованием LINQ и EF4 ( см. Здесь ), и, наконец, нашел решение построить выражение в виде строки и проанализировать его. в выражение с использованием библиотеки Dynamic LINQ.
Я решил проблему. Я смог сгенерировать Expression<Func<TSource, out bool>>
и передать его Where()
методу DbSet
. Я также пытаюсь сделать это, используя MySql в качестве базы данных за EF4.
Проблема возникла, когда я попытался применить строковые операции к целым числам, например, поиск записи в базе данных, последовательный номер которой начинается с 1234.
Мое первоначальное выражение было что-то вроде: record.ConsecutiveNumber.ToString().StartsWith("1234")
. К сожалению, как и ожидалось, все оказалось не так просто, так как EF4 не может запросить DbSet
за исключением:
"LINQ to Entities не распознает
метод 'System.String ToString ()'
метод, и этот метод не может быть
переведено в магазинное выражение. "
После некоторого поиска в Google я обнаружил, что это распространенная проблема. Но давай! Есть ли способ выполнить функцию поиска, которая может искать записи с последовательным номером, начинающимся с «1234»?
Как профессионалы реализуют функции поиска с EF4? Это с одним фильтром свойств. Что если я хочу добавить несколько фильтров? Боже, у меня болит голова ...: /
Спасибо!
EDIT:
Мысль № 1: А как насчет хранимой процедуры? Как насчет вызова хранимой процедуры MySql из Linq? Я стремлюсь слишком высоко?