title: System.ObjectDisposedException: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection
body: <p>I am using EF 4 to retrieve a list of Employees.</p>
  
  <pre><code>public ContentResult AutoCompleteResult(string searchText)
  {
      List&lt;Employee&gt; list = Employee.GetAllCurrentEmployees();
      List&lt;Employee&gt; filteredEmployees = list
          .Where(x =&gt; x.GetName().ToLower().Contains(searchText.ToLower()))
          .ToList();
  
      JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
      var jsonString = jsonSerializer.Serialize(filteredEmployees).ToString();
      return Content(jsonString);
  }
  </code></pre>
  
  <p>The list is retrieved OK, but when I serialize it, I get this exception;</p>
  
  <pre><code>System.ObjectDisposedException: The ObjectContext instance has been
   disposed and can no longer be used for
   operations that require a connection.
       Generated: Wed, 17 Nov 2010 16:06:56 GMT
  
   System.ObjectDisposedException: The ObjectContext instance has been
   disposed and can no longer be used for operations that require a connection. 
   at
   System.Data.Objects.ObjectContext.EnsureConnection()
   at
   System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)     at
   System.Data.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)     at
   System.Data.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)  at
   System.Data.Objects.DataClasses.EntityCollection`1.Load(MergeOption mergeOption)     at
   System.Data.Objects.DataClasses.RelatedEnd.Load() at
   System.Data.Objects.DataClasses.RelatedEnd.DeferredLoad() at
   System.Data.Objects.DataClasses.EntityCollection`1.System.Collections.IEnumerable.GetEnumerator() at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable enumerable, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object
   o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeEnumerable(IEnumerable enumerable, StringBuilder sb, Int32 depth, Hashtable objectsInUse,
   SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object
   o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat
   serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object
   obj, StringBuilder output, SerializationFormat serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object
   obj, SerializationFormat serializationFormat)     at
   System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj)     at
   SHP.Controllers.EmployeeController.AutoCompleteResult(String searchText) in C:\Documents and Settings\geoffreypayne\My Documents\Visual Studio
   2010\Projects\MVC\SHP\SHP\Controllers\EmployeeController.cs:line
   623     at lambda_method(Closure , ControllerBase , Object[] )     at
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)    at
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext
   controllerContext, IDictionary`2 parameters)     at
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
   controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)     at
   System.Web.Mvc.ControllerActionInvoker.&lt;&gt;c__DisplayClassd.InvokeActionMethodWithFilters&gt;b__a()
   at
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter
   filter, ActionExecutingContext preContext, Func`1 continuation)    
   at
   System.Web.Mvc.ControllerActionInvoker.&lt;&gt;c__DisplayClassd.&lt;&gt;c__DisplayClassf.&lt;InvokeActionMethodWithFilters&gt;b__c() at
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)     at
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext
   controllerContext, String actionName)
  </code></pre>
  
  <p>I find this very odd. I have already retrieved the list of employees and the DataContext has been disposed. So why would I get this error?</p>