A specified Include path is not valid. The EntityType does not declare a navigation property with the name *
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
Include
is only for navigation properties, and LastName
is a scalar property, so you don't need Include
at all.
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
.
If you want to retrieve only the LastName
, use
Select(m => m.LastName)
so
var users = db.UserProfiles
.Where(u => u.UserId == WebSecurity.CurrentUserId)
.Select(u => u.LastName)//not Include
.ToList();
LastName
is just a string (Scalar property) in your model, not a Navigation property (relation with another entity)