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?
I was also getting this error and resolved it by adding the following reference:
using System.Data.Entity;
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.
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.
I was also facing this issue and resolved it in asp.net core 3.0 project by adding the following reference:
using Microsoft.EntityFrameworkCore;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With