EF5代码首先从MVC4视图查询ICollection

时间:2012-09-10 16:57:14

标签: asp.net-mvc ef-code-first entity-framework-5

我没有找到答案,所以我问这个问题......很抱歉打扰。

我首先使用代码类似

的代码
public class Article
{
    ...
    public virtual ICollection<Photos> Images { get; set; }
    ...
}
public class Photo
{
   ...
   public string Location {get;set;}  //can be home, work or anything
   ...
}

现在,在HomeController中,我收到所有文章并做

if(articles.Any())
{
      ViewBag.Articles = articles;
}

然后,在视图中

foreach(var article in ViewBag.Articles)
{
     ... Do things working great here but...
}

所有这一切都很有效。我想要做的是从ICollection为每篇文章获取一个带位置==“home”的图像(例如)。为了做到这一点,我在法语中得到了不同的错误,他们说我“无法在其他动态上执行动态类型请求”,“数据加载器尚未打开”或“dbContext已关闭”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为视图中的ViewBag.Articles不包含Photo实体。当您尝试访问照片时,上下文已关闭并导致错误。

我的建议是:

调用包含在您的控制器中以提前加载Photo实体。

http://msdn.microsoft.com/en-us/library/bb738708.aspx

然后,在分配文章时调用ToList:

  

ViewBag.Articles = articles.ToList();

除此之外,最好使用ViewModel,而不是将数据对象放入ViewBag。祝你好运。