Код EF5 сначала запрашивает ICollection из представления MVC4
Я не нашел ответа, поэтому я задаю вопрос... Извините, что беспокою.
Сначала я использую код с классом Article
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...
}
Все это прекрасно работает. Что я хочу сделать, так это получить ОДИН образ с местоположением =="home" (например) из ICollection для каждой статьи. Пытаясь сделать это, я получаю разные ошибки на французском языке, который говорит, что такие вещи, как я, "не может выполнить запрос типа динамический на другой динамике", "еще не открыта программа чтения данных" или "dbContext закрыт".
Спасибо за любую помощь.
1 ответ
Я думаю, что ViewBag. Статьи в представлении не содержат объектов Photo. При попытке доступа к фотографиям контекст был закрыт и вызвала ошибку.
Мое предложение будет:
Вызовите Включить в свой контроллер для ранней загрузки объектов Photo.
http://msdn.microsoft.com/en-us/library/bb738708.aspx
Затем вызовите ToList при назначении статей:
ViewBag.Articles = article.ToList();
Помимо этого, хорошей практикой является использование ViewModel вместо помещения объектов данных в ViewBag. Удачи.