0

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

2 回答 2

0

将延迟加载设置为禁用:

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

在http://msdn.microsoft.com/en-us/library/bb896272.aspx查看更多信息

于 2013-08-21T10:16:11.457 回答
0

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

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

于 2013-03-24T18:45:36.840 回答