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?
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.