views:

2194

answers:

6

The Entity Framework does not support the Expression.Invoke operator (You receive the following exception when trying to use it: "The LINQ expression node type 'Invoke' is not supported in LINQ to Entities.)

Has anyone got a workaround for this missing functionality? I would like to use the PredicateBuilder detailed here in an Entity Framework context.

Edit: @marxidad - I like your suggestion, however it does baffle me somewhat. Can you give some further advice on your proposed solution?

Edit: @marxidad - Thanks for the clarification.

A: 

Yeah, looks like Entity Framework doesn't support this, nor could i jerry-rig a way to get it to evaluate in a way that would work.

Darren Kopp
A: 

The Entity framework converts LINQ expressions into Entity Command trees and within that only its canonical functions are supported. You'd have to use the command trees with canonical functions to do something like PredicateBuilder.

Mark Cidade
A: 

@Brad have a look at the CLR Method to Canonical Function Mapping page on MSDN.

Mark Cidade
+2  A: 

I posted a solution here

Phobis
A: 

Phobis's solution is on the money.

With a bit of extra effort you can build complex Dynamic LINQ queries on the fly using this approach

+4  A: 

PredicateBuilder and LINQKit now support Entity Framework.

Sorry, guys, for not doing this earlier!

Joe Albahari
Yep- it works now. Just add AsExpandable() before your .Where<>() and your good to go.
Merritt