Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A specified Include path is not valid. The EntityType does not declare a navigation property with the name *

I'm trying to get data from a LocalDb into my MVC Controller. I tried this:

UsersContext db = new UsersContext();
var users = db.UserProfiles.Where(u => u.UserId == WebSecurity.CurrentUserId)
                           .Include(u => u.LastName).ToList();

It returns this error:

A specified Include path is not valid. The EntityType 'ChatProj.Models.UserProfile' does not declare a navigation property with the name 'LastName'.

Here is a picture of my localDb and model.

Any idea why it's not working?

like image 662
JazzMaster Avatar asked Dec 17 '13 15:12

JazzMaster


3 Answers

Navigation property should be of entity type of collection of related entities. Including some navigation property means joining your current entity with some related entity or entities. That allows eager loading of data from several tables in single query. LastName is not a navigation property - it is simple field, and it will be loaded by default, you don't need to include it:

UsersContext db = new UsersContext();
var users = db.UserProfiles.Where(u => u.UserId == WebSecurity.CurrentUserId)
                           .ToList();

This query will be translated into something like

SELECT UserId, UserName, LastName, FirstName 
FROM UserProfiles
WHERE UserId = @value
like image 57
Sergey Berezovskiy Avatar answered Oct 28 '22 12:10

Sergey Berezovskiy


Include is only for navigation properties, and LastName is a scalar property, so you don't need Include at all.

like image 23
Thomas Levesque Avatar answered Oct 28 '22 12:10

Thomas Levesque


Even though this is not quite related to the question, since Google brings you here, I thought it might be helpful to notice that a likely possibility is that you are using IEnumerable for your collection. Instead you should be using ICollection, see more here: https://stackoverflow.com/a/32997694/550975

This seems to be a problem in EF6 and perhaps earlier versions only... no longer a problem to use either in EF Core.

like image 21
Serj Sagan Avatar answered Oct 28 '22 13:10

Serj Sagan