Expression.Invoke in Entity Framework?

Cadrul de entități nu acceptă operatorul Expression.Invoke . Veți primi următoarea excepție atunci când încercați să o utilizați:

"Tipul de nod expresie LINQ" Invoke "nu este acceptat în LINQ la entități.

A luat cineva o soluție pentru această lipsă de funcționalitate? Aș dori să folosesc programul PredicateBuilder aici într-un context Entity Framework.

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

Edit 2 @marxidad - Thanks for the clarification.

0
fr hi bn
aruncați o privire la pagina Metoda CLR pentru cartografierea funcțiilor Canonice de pe MSDN .
adăugat autor Mark Cidade, sursa

5 răspunsuri

Da, se pare ca Entity Framework nu sustine acest lucru, nici nu ar putea sa-i instalez o modalitate de a obtine evaluarea intr-un mod care sa functioneze.

0
adăugat

Cadrul entității convertește expresiile LINQ în arbori de comandă a entităților și în cadrul căruia sunt suportate numai funcțiile canonice. Va trebui să utilizați arborii de comandă cu funcții canonice pentru a face ceva de genul PredicateBuilder.

0
adăugat

PredicateBuilder and LINQKit now support Entity Framework.

Ne pare rău, băieți, pentru că nu ați făcut asta mai devreme!

0
adăugat
Da, funcționează acum. Doar adăugați AsExpandabil() înaintea dvs.. În cazul în care <>() și binele dvs. de a merge.
adăugat autor Merritt, sursa
Când adaug "AsExpandable" (), primesc "Obiect de tip" System.Linq.Expressions.MemberExpression "nu poate fi distribuit la tip" System.Linq.Expressions.LambdaExpression "." în VizitaInvocare la linia LambdaExpression lambda = (LambdaExpression) țintă;
adăugat autor mikemurf22, sursa
0
adăugat

Soluția lui Phobis este pe bani.

Cu un efort suplimentar puteți construi interogări complexe dinamice LINQ în zbor folosind această abordare

0
adăugat