对象脱离上下文

本文关键字:上下文 对象 | 更新日期: 2023-09-27 18:05:51

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

对象脱离上下文

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

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

设置延迟加载为禁用:

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

更多信息请访问http://msdn.microsoft.com/en-us/library/bb896272.aspx