Mi comando sigue agotando el tiempo de espera, por lo que necesito cambiar el valor predeterminado del tiempo de espera del comando.
Lo he encontrado myDb.Database.Connection.ConnectionTimeout
, pero lo es readonly
.
¿Cómo puedo configurar el tiempo de espera del comando en Entity Framework 5 ?
Database.CommandTimeout
ya no es de solo lecturaDatabase.Connection.ConnectionTimeout
. De todos modos, diría queDatabase.CommandTimeout
es lo correcto en el caso de que su consulta sea de tiempo de espera (queSystem.Data.Entity.Core.EntityCommandExecutionException
contiene una excepciónSystem.Data.SqlClient.SqlException: Timeout expired.
).Respuestas:
Prueba esto en tu contexto:
Si desea definir el tiempo de espera en la cadena de conexión, use el
Connection Timeout
parámetro como en la siguiente cadena de conexión:Fuente: Cómo: definir la cadena de conexión
fuente
ObjectContext
a este constructor, a veces los comandos de la consola PowerShell / NuGet fallarán de forma circular .Puedes usar
DbContext.Database.CommandTimeout = 180;
Es bastante simple y no requiere yeso.
fuente
Fluent API
forma de EF.Mi contexto parcial se ve así:
Dejé
SetCommandTimeOut
público, por lo que solo modifico las rutinas que necesito tomar mucho tiempo (más de 5 minutos) en lugar de un tiempo de espera global.fuente
En el código de constructor generado debería llamar
OnContextCreated()
Agregué esta clase parcial para resolver el problema:
fuente
Extendí la respuesta de Ronnie con una implementación fluida para que puedas usarla así:
dm.Context.SetCommandTimeout(120).Database.SqlQuery...
fuente
Para la base de datos primero Aproach:
Todavía podemos configurarlo en un constructor, anulando la plantilla ContextName.Context.tt T4 de esta manera:
Database.CommandTimeout = 180;
Es el cambio acutal.La salida generada es esta:
Si cambia su Modelo de base de datos, esta plantilla permanece, pero la clase actual se actualizará.
fuente
System.Configuration.ConfigurationManager.AppSettings["keyname"]
@shasIgual que otras respuestas, pero como método de extensión:
fuente
Acabo de encontrarme con este problema y lo resolví actualizando el archivo de configuración de mi aplicación. Para la conexión en cuestión, especifique "Tiempo de espera de conexión = 60" (estoy usando la versión de Framework 5.0.0.0 de la entidad)
ConnectionTimeout Setting
fuente
Puedes usar este simple:
dbContext.Database.SetCommandTimeout(300);
fuente