ASP.NET MVC获取内容所有者用户名

时间:2014-02-04 15:46:50

标签: c# asp.net .net asp.net-mvc author

我正在尝试获取帖子所有者的用户名。这是迄今为止我尝试过的。

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]'

那么我怎样才能获得作者的用户名?

1 个答案:

答案 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();