2012-09-10 37 views
0

我沒有找到答案,所以我問這個問題......抱歉打擾。EF5代碼第一次查詢從MVC4查看ICollection

我第一次使用的代碼與文章類看起來像

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獲取位置爲「家」(例如)的ONE Image。試圖做到這一點,我得到法國誰說我像「不能動態類型的請求在其他動態」,「數據讀取器尚未打開」或「dbContext已關閉」等不同的錯誤。

謝謝你的幫助。

回答

1

我覺得ViewBag.Articles在視圖中並沒有包含Photo實體。當您試圖訪問照片時,上下文被關閉並導致錯誤。

我的建議是:

呼叫在您的控制器早期負荷照片實體包括。

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

然後,調用ToList當你將文章:

ViewBag.Articles = articles.ToList();

除此之外,最好使用ViewModel,而不是將數據對象放入ViewBag中。祝你好運。

+0

謝謝,它的效果很好。我做了它打開一個新的dbcontext,但你的解決方案是更快,更簡單。 – Netah