Asp.net mvc asp.net mvc中的外键

Asp.net mvc asp.net mvc中的外键,asp.net-mvc,dependency-injection,repository-pattern,asp.net-mvc-4,Asp.net Mvc,Dependency Injection,Repository Pattern,Asp.net Mvc 4,我有一个视图,我想在其中显示对一本书的评论。 我渲染视图,其中我显示了一本书,如下所示: public ActionResult Show(int id) { var model = _repository.GetSeriesById(id); return View(model); } var comments = _db.Comments.Include("User").Where(sId => sId.Id == seriesId).

我有一个视图,我想在其中显示对一本书的评论。 我渲染视图,其中我显示了一本书,如下所示:

public ActionResult Show(int id)
    {
        var model = _repository.GetSeriesById(id);
        return View(model);
    }
var comments = _db.Comments.Include("User").Where(sId => sId.Id == seriesId).ToList();
在视图中,我使用模型显示注释。(系列有注释,注释有用户id)

}

然后我可以循环浏览评论以显示消息等

    @foreach(var comment in comments)
    {

   @comment.Created 
    @comment.Message  

     }
我的问题是当我尝试这样做时:

@comment.User.id
我得到一个空引用错误。我知道您可以使用存储库中的include属性包含外键,如下所示:

public ActionResult Show(int id)
    {
        var model = _repository.GetSeriesById(id);
        return View(model);
    }
var comments = _db.Comments.Include("User").Where(sId => sId.Id == seriesId).ToList();
但是在我的控制器中不可能做到这一点,因为我正在发送一个系列模型。
那么,如何显示在我的视图中发布评论的用户?

看起来您正在使用实体框架?在运行实际查询时,应该包括外键相关对象。当您在视图中执行此操作时,为时已晚,查询已返回,但未加载外键关系。

可能您没有为此注释分配用户?检查数据库,但这是不可能的。。您创建了一个泄漏的抽象,您不想更改它,但您请求了帮助。我使用Viewbag解决了这个问题,并在getCommentsForSeries方法中包含了用户外键。但我觉得Viewbag在页面上很重