In my controller i am trying to use include with EF4 to select related entities, but the lambda expression is throwing the following error,
i have the related entity defined in the Entity class like
public class CustomerSite
{
public int CustomerSiteId { get; set; }
public int CustomerId { get; set; }
public virtual Customer Customer { get; set; }
}
Then in my controller i have
var sites = context.CustomerSites.Include(c => c.Customer);
public ViewResult List()
{
var sites = context.CustomerSites.Include(c => c.Customer);
return View(sites.ToList());
}
Can anyone kindly point me in the right direction on what i'm doing wrong here?
The
Include
method expects a string, not a lambda:Of course you could write a custom extension method which would work with lambda expressions and make your code independant of some magic strings and refactor friendlier.
But whatever you do PLEASE OH PLEASE don't pass EF autogenerated objects to your views. USE VIEW MODELS.
If you are getting this error in Razor:
Ex:
C# doesn't know how to convert the string to valid bool or known type.
So change your string as below:
or
Include
takes a string, not a lambda expression.Change it to
CustomerSites.Include("Customer")
Well, the post is quite old, but just replying here to update it. Well, the
Include()
method with Entity Framework 4.1 has extension methods and it also accepts a lambda expression. Sois perfectly valid, all you need to do is use this:
Include is an extension method in the System.Data.Entity namespace, you need to add:
Then you can use the lambda expression, instead of the string.