对象脱离上下文

时间:2013-03-24 18:40:55

标签: c# json asp.net-mvc entity-framework objectcontext

我的对象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);
    }
}

2 个答案:

答案 0 :(得分:0)

问题可能是一个或多个关系被延迟加载而不是急切加载。好消息是,由于上下文已经管理了连接,因此using不需要DbContext语句,几乎不需要Dispose(cf,http://stephenwalther.com/archive/2008/08/20/asp-net-mvc-tip-34-dispose-of-your-datacontext-or-don-t.aspx)。或者,您可以通过设置上下文的加载选项来确保您急切加载的任何关系。

注意:如果你使用IoC并注入上下文而不是直接创建它,你可以完全避免这个问题,因为DI框架将负责为你清理上下文。

答案 1 :(得分:0)

将延迟加载设置为禁用:

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

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

查看更多信息