6

Tengo problemas con una de mis consultas debido a las funciones de seguimiento de cambios y de carga diferida de EF. El problema es que después de obtener el resultado de la consulta, estoy usando AutoMapper para mapear los objetos de dominio en mi modelo de negocio, pero sigue arrojando una excepción porque el contexto ha sido descartado.La instancia de ObjectContext se ha eliminado y ya no se puede usar para operaciones que requieren una conexión

La instancia de ObjectContext se ha eliminado y ya no se puede usar para las operaciones que requieren una conexión.

Cuando miro la colección resultante en el depurador, veo que es una lista de DynamicProxy y no la entidad real. Intenté detener Change Tracking, pero eso no ayudó. Aquí está mi código:

public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId) 
    { 
     List<ContentTypeColumn> result = new List<ContentTypeColumn>(); 
     using (SCGREDbContext context = new SCGREDbContext()) 
     {     
      ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId)); 

      result.AddRange(contentType.ContentTypeColumns.ToList()); 
      while (contentType.Parent != null) 
      { 
       result.AddRange(contentType.Parent.ContentTypeColumns.ToList()); 
       contentType = contentType.Parent; 
      }  
     } 
     return result.ToList(); 
    } 

Nota: Si usted tiene que mirar en mi modelo de dominio implicados en esta operación se puede hacer referencia a this question.

+0

Lazy loading? Eso causaría esto. –

+0

Lo sé, y estoy tratando de evitar la carga lenta en este caso particular, pero no puedo encontrar una forma de evitarlo. ¿Alguna sugerencia? – Kassem

+0

Posible duplicado de [Cómo resolver el error La instancia de ObjectContext se ha eliminado y ya no se puede usar para operaciones que requieren una conexión] (https://stackoverflow.com/questions/18398356/how-to-solve-the- error-el-objectcontext-instancia-ha-estado-dispuesto-y-puede-no-l) –

Respuesta

19

Si tiene que dejar de carga diferida y el cambio dinámico de seguimiento puede simplemente girar apagado:

using (SCGREDbContext context = new SCGREDbContext()) 
{ 
    context.Configuration.ProxyCreationEnabled = false; 
    ... 
} 
+0

Eso lo hizo ... Gracias :) – Kassem

+0

¡Perfecto! ¡Esto me ahorró tanto tiempo! –

Cuestiones relacionadas