Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linq-to-Entities Include method not found

I am using EF4 within a MVC3 application and I was looking for a way to view all my contacts within a given workgroup. In the controller I specified:

var wg = from w in _repo.Workgroups.Include("Contact").ToList();

but I get the following error:

'System.Linq.IQueryable' does not contain a definition for 'Include' and no extension method 'Include' accepting a first argument of type 'System.Linq.IQueryable' could be found (are you missing a using directive or an assembly reference?)

I though this method was built into EF4. Do I have enable it somehow?

like image 336
jdiaz Avatar asked Mar 10 '11 07:03

jdiaz


4 Answers

I was also getting this error and resolved it by adding the following reference:

using System.Data.Entity;
like image 109
BruceHill Avatar answered Oct 03 '22 01:10

BruceHill


Yes the method is build into EF but it is not available on IQueryable interface. It is available on ObjectQuery. If you want to call it on IQueryable you must create your own extension wich will convert current query to ObjectQuery and perform Include. Something like:

public static IQueryable<T> Include<T>(this IQueryable<T> query, string property)
{
  var objectQuery = query as ObjectQuery<T>;
  if (objectQuery == null)
  {
    throw new NotSupportedException("Include can be called only on ObjectQuery");
  }

  return objectQuery.Include(property);
}

Or you must use Entity Framework Feature CTP5 where such extensions are already available.

like image 44
Ladislav Mrnka Avatar answered Sep 29 '22 01:09

Ladislav Mrnka


Bruce Hill's answer is absolutely right.

Just to expand on his answer a bit, the Include methods are extension methods in the System.Data.Entity namespace.

It doesn't affect how you use them, but the Include methods are actually defined in a static class named DbExtensions. At msdn.microsoft.com, you'll see them documented there, not under System.Linq.IQueryable, making them just a bit harder to find.

like image 33
Dan K Avatar answered Sep 30 '22 01:09

Dan K


I was also facing this issue and resolved it in asp.net core 3.0 project by adding the following reference:

using Microsoft.EntityFrameworkCore; 
like image 4
Sufyan Ahmad Avatar answered Oct 02 '22 01:10

Sufyan Ahmad