martes, 29 de abril de 2014

Error "El código de usuario no controló EntityCommandExecutionException" usando EntityFrameWork y linq

Si estamos en modo de depuración desde el IDE tendremos una ventana como ésta:

Lo primero es identificar la excepción de forma correcta. Para ello le damos a Ver detalle...

Y una vez dentro del detalle desplegamos la Excepción para consultar la propiedad "InnerExcepcion" que es la excepcion interna y nos devuelve mas información.



La ventana donde veremos la excepion interna tiene esta apariencia:

En nuestro ejemplo estamos trabajando con sentencias linq y lo que sucede es que tardan "demasiado tiempo" por el volumen de datos manejado y como medida de protección el tiempo de duración está limitado para evitar problemas de estabilidad en el sistema.
Si queremos permitirlo debemos de establecer el siguiente comando sobre nuestro objecto del contexto (llamado en este ejemplo Micontext)

((System.Data.Entity.Infrastructure.IObjectContextAdapter) Micontext).ObjectContext.CommandTimeout

de modo que el código quedaría algo así ....

cloudEntities Micontext= new cloudEntities();
((System.Data.Entity.Infrastructure.IObjectContextAdapter) Micontext).ObjectContext.CommandTimeout = 0;

var Consulta = from g in Micontext.MiTabla
               select new{g.campo1, g.campo2}

Comando extraido de la fuente:
http://stackoverflow.com/questions/11747368/set-command-timeout-in-entity-framework-4-3

No hay comentarios:

Publicar un comentario

Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...