GetPosts方法给出NullReferenceException

时间:2015-10-22 08:27:04

标签: asp.net-mvc-4 dynamic ef-code-first linq-to-entities

我无法找到错误的根本原因,因为此方法正在给出NullReferenceException -----

  public dynamic GetPosts()
    {

        var ret = (from post in db.Posts.ToList()
                   orderby post.PostedDate descending
                   select new
                   {
                       Message = post.Message,
                       PostedBy = post.PostedBy,
                      // PostedByName = post.UserProfile.UserName,
                       PostedByAvatar = imgFolder + (String.IsNullOrEmpty(post.UserProfile.AvatarExt) ? defaultAvatar : post.PostedBy + "." + post.UserProfile.AvatarExt),
                       PostedDate = post.PostedDate,
                       PostId = post.PostId,
                       PostComments = from comment in post.PostComments.ToList()
                                      orderby comment.CommentedDate
                                      select new
                                      {
                                          CommentedBy = comment.CommentedBy,
                                         // CommentedByName = comment.UserProfile.UserName,
                                          CommentedByAvatar = imgFolder + (String.IsNullOrEmpty(comment.UserProfile.AvatarExt) ? defaultAvatar : comment.CommentedBy + "." + comment.UserProfile.AvatarExt),
                                          CommentedDate = comment.CommentedDate,
                                          CommentId = comment.CommentId,
                                          Message = comment.Message,
                                          PostId = comment.PostId

                                      }
                   }).AsEnumerable();
        return ret;
    }

在堆栈跟踪中,我无法找到错误的路由原因,因为没有显示详细的相关信息。

我的用户表,Post表和注释表连接在一起,如果我尝试在视图页面上发布内容,则工作正常。 我的PostMethod工作正常,就像这样-----

    public HttpResponseMessage PostPost(Post post)
    {
        post.PostedBy = WebSecurity.CurrentUserId;
        post.PostedDate = DateTime.UtcNow;
        ModelState.Remove("post.PostedBy");
        ModelState.Remove("post.PostedDate");
        if (ModelState.IsValid)
        {
            db.Posts.Add(post);
            db.SaveChanges();
            var usr = db.UserProfile.FirstOrDefault(x => x.UserId == post.PostedBy);
            var ret = new
            {
                Message = post.Message,
                PostedBy = post.PostedBy,
                PostedByName = usr.UserName,
                PostedByAvatar = imgFolder + (String.IsNullOrEmpty(usr.AvatarExt) ? defaultAvatar : post.PostedBy + "." + post.UserProfile.AvatarExt),
                PostedDate = post.PostedDate,
                PostId = post.PostId
            };
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, ret);
            response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = post.PostId }));
            return response;
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
        }
     }

我的用户表是-----

        [Table("UserProfile")]
public class UserProfile
{
    public UserProfile()
    {
        this.PostComments = new HashSet<PostComment>();
        this.Posts = new HashSet<Post>();
    }
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string AvatarExt { get; set; }
    public virtual ICollection<PostComment> PostComments { get; set; }
    public virtual ICollection<Post> Posts { get; set; }
}

我的帖子表是-----

      public class Post
{
    public Post()
    {
        this.PostComments = new HashSet<PostComment>();
    }
    [Key]
    public int PostId { get; set; }
    public string Message { get; set; }
    public int PostedBy { get; set; }
    public System.DateTime PostedDate { get; set; }
    public int UserId { get; set; }

    public virtual ICollection<PostComment> PostComments { get; set; }
    public virtual UserProfile UserProfile { get; set; }
}

我的PostComment表是----

     public class PostComment
{

    [Key]
    public int CommentId { get; set; }
    public int PostId { get; set; }
    public string Message { get; set; }
    public int CommentedBy { get; set; }
    public System.DateTime CommentedDate { get; set; }
    public int UserId { get; set; }

    public virtual Post Post { get; set; }
    public virtual UserProfile UserProfile { get; set; }
}

我正在关注这篇文章----- http://techbrij.com/facebook-wall-posts-comments-knockout-aspnet-webapi Plzz建议我该怎么做。

0 个答案:

没有答案