Я создаю приложение ASP.NET MVC 3, и у меня есть модель, которая выглядит примерно так:
public partial class Flavor
{
// ...
public string Name { get; set; }
public bool HasNuts {get; set; }
public virtual ICollection<SaleData> Sales {get; set;}
// ...
}
, которая извлекает некоторые данные из БД как таковые:
public PartialViewResult Details(int id)
{
using (var db = new IceCreamDBFlavors())
{
Flavor someFlavor = db.Flavors.Find(id);
someFlavor.Sales = db.Sales.Where(c => c.FlavorID == id).ToList();
return PartialView("details", someFlavor);
}
}
на представлении я делаю что-то вроде этого:
<fieldset>
<legend>Sales Data</legend>
@foreach (var sale in Model.Sales)
{
<div>Weekly</div>
<div>@sale.Weekly</div>
}
</fieldset>
Если я не получаю данные продаж, мои данные вкуса отображаются нормально, без ошибок, но при добавлении вызова для получениясписок данных о продажах приводит к ошибке "Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения." * Произошло .
Я прочитал несколько другихпосты об этом и думаю, я что-то здесь упускаю.Я полагаю, что эта ошибка происходит из-за отложенной загрузки, по крайней мере, на основании того, что я читал здесь и в других местах.Установка точки останова в контроллере перед возвратом PartialView и проверка объекта, я полагаю, приводит к выполнению оценки, поэтому все отображается так, как я хотел бы.
У меня сложилось впечатление, что вызов ToList()
приведет к заполнению коллекции Sales. Поскольку у меня нет проблемы, когда эта строка закомментирована, я предполагаю, что проблема все еще связана с этим, и когда представление пытается выполнить итерации Sales, это невозможно.Я прав здесь?Я думаю, я думал Я заставлял оценку.Как мне решить эту проблему?