指定的包含路径无效。EntityType没有声明名称为*的导航属性

我正在尝试将数据从LocalDb获取到我的MVC控制器中。我尝试了这个:


UsersContext db = new UsersContext();

var users = db.UserProfiles.Where(u => u.UserId == WebSecurity.CurrentUserId)

                           .Include(u => u.LastName).ToList();

它返回此错误:


指定的包含路径无效。EntityType“ ChatProj.Models.UserProfile”未声明名称为“ LastName”的导航属性。

知道为什么它不起作用吗?



婷婷同学_
浏览 990回答 3
3回答

湖上湖

导航属性应为相关实体集合的实体类型。包括一些导航属性意味着加入了一些相关的实体或实体的当前实体。这样就可以在单个查询中渴望从多个表中加载数据。LastName不是导航属性-它是一个简单字段,默认情况下会加载,您无需添加它:UsersContext db = new UsersContext();var users = db.UserProfiles.Where(u => u.UserId == WebSecurity.CurrentUserId)                           .ToList();该查询将被翻译成类似SELECT UserId, UserName, LastName, FirstName FROM UserProfilesWHERE UserId = @value

炎炎设计

如果您只想检索LastName,请使用Select(m => m.LastName)所以 var users = db.UserProfiles                .Where(u => u.UserId == WebSecurity.CurrentUserId)                .Select(u => u.LastName)//not Include                .ToList();LastName 只是模型中的字符串(标量属性),而不是导航属性(与另一个实体的关系)
打开App,查看更多内容
随时随地看视频慕课网APP