我正在尝试获取帖子所有者的用户名。这是迄今为止我尝试过的。
var model = db.Posts
.OrderByDescending(d => d.PostDate)
.Select(p => new PostViewModel
{
Id = p.Id,
Title = p.Title,
Link = p.Link,
Description = p.Description,
Username = db.UserProfiles.Find(p.UserId).UserName
}).ToList();
我正在尝试从我的域模型发布并将其存储到视图模型,除了按作者ID获取用户名外,一切正常。我收到了这个错误:
Method 'Project.Models.UserProfile Find(System.Object[])' declared on type 'System.Data.Entity.DbSet`1[Project.Models.UserProfile]' cannot be called with instance of type 'System.Data.Objects.ObjectQuery`1[Project.Models.UserProfile]'
那么我怎样才能获得作者的用户名?
答案 0 :(得分:2)
必须有一些方法可以从Post导航到UserProfile。使用.Include()来获取必要的关系,然后访问它。例如,如果Post具有名为UserProfile的可导航属性,请执行以下操作。
var model = db.Posts
.Include( "UserProfile" )
.OrderByDescending(d => d.PostDate)
.Select(p => new PostViewModel
{
Id = p.Id,
Title = p.Title,
Link = p.Link,
Description = p.Description,
Username = p.UserProfile.UserName
}).ToList();