Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The LINQ expression node type 'Invoke' is not supported in LINQ to Entities in entity framework

Tags:

can anyone help me out in solving my issue. I am using the code given below:

public IEnumerable<InvoiceHeader> Getdata(Expression<Func<InvoiceHeader, bool>> predicate) {     return AccountsContext.InvoiceHeaders.Include("Company").Include("Currency")         .Include("BusinessPartnerRoleList").Include("DocumentType")         .Where(predicate); } 

.....

In my code I am using as below

Expression<Func<InvoiceHeader, bool>> predicate = PredicateBuilder.True<InvoiceHeader>(); predicate = predicate.And(o => o.CompanyId == oInvoiceHeader.CompanyId); List<InvoiceHeader> lstInvheader=Getdata(predicate).ToList(); 

By doing this I am getting the exception . [System.NotSupportedException] --- {"The LINQ expression node type 'Invoke' is not supported in LINQ to Entities."}

like image 260
zaheer abbas Avatar asked Jan 05 '12 11:01

zaheer abbas


1 Answers

This problem can be solved using the AsExpandable() method present in LINQKIT by Joe Albahari. He's the same creator of PredicateBuilder that I see you're using.

If querying with Entity Framework, change the last line to this:

return objectContext.Products.AsExpandable().Where(predicate);

You can grab LINQKIT DLL here or install it through a NuGet package here.

It'll certainly solve your problem because it has solved mine.

like image 157
Leniel Maccaferri Avatar answered Sep 28 '22 05:09

Leniel Maccaferri