Объект вне контекста

Мой объект eventTypeList выходит из контекста, даже если он используется. Любой совет?

сообщение об ошибке: Экземпляр ObjectContext удален и больше не может использоваться для операций, требующих подключения.

public ActionResult GetEventTypeList()
{
    List<EventType> eventTypeList;
    using (var db = new ICTTBEntities())
    {
        eventTypeList = (from et in db.EventTypes select et).ToList();
        var result = new { Result = "OK", Records = eventTypeList };

        return Json(result, JsonRequestBehavior.AllowGet);
    }
}

person user2205196    schedule 24.03.2013    source источник


Ответы (2)


Проблема, скорее всего, в одном или нескольких отношениях, которые загружаются лениво, а не жадно. Хорошей новостью является то, что вам не нужен оператор using для DbContext, так как контекст уже управляет подключениями, и в Dispose практически нет необходимости (см. http://stephenwalther.com/archive/2008/).20/08/asp-net-mvc-tip-34-dispose-of-your-datacontext-or-don-t.aspx). Кроме того, вы можете убедиться, что любые отношения, которые у вас есть, загружаются с готовностью, установив параметры загрузки для контекста.

Примечание: если вы используете IoC и внедряете контекст, а не создаете его напрямую, вы можете полностью избежать проблемы, поскольку инфраструктура внедрения зависимостей позаботится об очистке контекста за вас.

person tvanfosson    schedule 24.03.2013
comment
Это была именно ошибка, спасибо! Закончилось созданием простых объектов для их представления, так как это очень небольшой набор данных, который используется очень редко. - person user2205196; 24.03.2013

Установите ленивую загрузку для отключения:

[...]
using (var db = new ICTTBEntities())
    {
         db.Configuration.LazyLoadingEnabled = false;
         [...]
    }

дополнительные сведения см. на странице http://msdn.microsoft.com/en-us/library/bb896272.aspx

person Ema.H    schedule 21.08.2013