Ответ 1
PredicateBuilder и LINQKit теперь поддерживают Entity Framework.
Извините, ребята, за то, что раньше не делали этого!
Entity Framework не поддерживает оператор Expression.Invoke
. При попытке его использования вы получаете следующее исключение:
"Выражение LINQ node типа" Invoke "не поддерживается в LINQ to Entities.
У кого-нибудь есть обходной путь для этой недостающей функциональности? Я хотел бы использовать подробный здесь PredicateBuilder в контексте Entity Framework.
Изменить 1 @marxidad - Мне нравится ваше предложение, однако оно меня несколько сбивает с толку. Можете ли вы дать дополнительные рекомендации по предлагаемому решению?
Изменить 2 @marxidad - Спасибо за разъяснение.
PredicateBuilder и LINQKit теперь поддерживают Entity Framework.
Извините, ребята, за то, что раньше не делали этого!
Да, похоже, что Entity Framework не поддерживает это, и я не мог бы использовать jerry-rig, чтобы заставить его оценивать так, как это работает.
Структура Entity преобразует выражения LINQ в деревья команд Entity и внутри них поддерживаются только его канонические функции. Вам нужно будет использовать деревья команд с каноническими функциями, чтобы сделать что-то вроде PredicateBuilder.
Решение Phobis находится на деньгах.
С небольшим усилием вы можете создавать сложные запросы Dynamic LINQ на лету, используя этот подход