Estoy obteniendo tiempos de espera usando Entity Framework (EF) cuando uso una función de importación que demora más de 30 segundos en completarse. Intenté lo siguiente y no he podido resolver este problema:
He añadido Default Command Timeout=300000
a la cadena de conexión en el app.config archivo en el proyecto que tiene el archivo EDMX como se sugiere aquí .
Así es como se ve mi cadena de conexión:
<add
name="MyEntityConnectionString"
connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
res://*/MyEntities.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
MultipleActiveResultSets=True;Default Command Timeout=300000;""
providerName="System.Data.EntityClient" />
Intenté configurar CommandTimeout en mi repositorio directamente así:
private TrekEntities context = new TrekEntities();
public IEnumerable<TrekMatches> GetKirksFriends()
{
this.context.CommandTimeout = 180;
return this.context.GetKirksFriends();
}
¿Qué más puedo hacer para que el EF se agote? Esto solo sucede para conjuntos de datos muy grandes. Todo funciona bien con pequeños conjuntos de datos.
Aquí está uno de los errores que obtengo:
System.Data.EntityCommandExecutionException: se produjo un error al ejecutar la definición del comando. Vea la excepción interna para más detalles. ---> System.Data.SqlClient.SqlException: expiró el tiempo de espera. El tiempo de espera transcurrido antes de la finalización de la operación o el servidor no responde.
OK, tengo esto funcionando y es tonto lo que pasó. Tenía tanto la cadena de conexión con Default Command Timeout=300000
CommandTimeout configurada en 180. Cuando eliminé Default Command Timeout
la cadena de conexión, funcionó. Entonces, la respuesta es configurar manualmente CommandTimeout en su repositorio en su objeto de contexto de la siguiente manera:
this.context.CommandTimeout = 180;
Aparentemente, la configuración del tiempo de espera en la cadena de conexión no tiene ningún efecto.
"
en la cuerda.
NONCLUSTERED
índices a algunas de las tablas, esto resolvió el problema del tiempo de espera para nosotros.