Выражение. Вызов в Entity Framework?

Entity Framework не поддерживает Expression.Invokeоператора. Вы получаете следующее исключение при попытке использовать его:

"Тип узла выражения LINQ 'Invoke' не поддерживается в LINQ to Entities.

У кого-нибудь есть обходной путь для этой недостающей функциональности? Я хотел бы использовать PredicateBuilder, подробно описанный здесь, в контексте Entity Framework.

Edit 1 @marxidad - мне нравится ваше предложение, однако оно несколько сбивает меня с толку. Можете ли вы дать дополнительные советы по предложенному решению?

Edit 2 @marxidad - Спасибо за разъяснения.

14.08.2008 00:24:43
Да, похоже, что Entity Framework не поддерживает это, и я не могу найти способ оценить его так, чтобы это работало.
Darren Kopp 15.08.2008 16:17:02
взгляните на страницу CLR Method to Canonical Function Mapping на MSDN.
Mark Cidade 19.08.2008 02:48:52
2 ОТВЕТА
РЕШЕНИЕ

PredicateBuilder и LINQKit теперь поддерживают Entity Framework.

Извините, ребята, что не сделали этого раньше!

30
5.04.2009 04:56:19
Да, это работает сейчас. Просто добавьте AsExpandable () перед вашим .Where <> () и все готово.
Merritt 23.06.2009 18:33:42
Когда я добавляю AsExpandable (), я получаю сообщение «Невозможно привести объект типа« System.Linq.Expressions.MemberExpression »к типу« System.Linq.Expressions.LambdaExpression »." в VisitInvocation в строке LambdaExpression lambda = (LambdaExpression) target;
mikemurf22 14.03.2011 16:53:15

Платформа Entity преобразует выражения LINQ в деревья команд Entity, в которых поддерживаются только ее канонические функции. Вам придется использовать деревья команд с каноническими функциями, чтобы сделать что-то вроде PredicateBuilder.

0
17.08.2008 22:06:30