我的对象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);
}
}
答案 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;
[...]
}
查看更多信息