Meu comando continua atingindo o tempo limite; portanto, preciso alterar o valor padrão do tempo limite do comando.
Eu encontrei myDb.Database.Connection.ConnectionTimeout
, mas é readonly
.
Como posso definir o tempo limite do comando no Entity Framework 5 ?
Database.CommandTimeout
não é mais somente leituraDatabase.Connection.ConnectionTimeout
. Enfim, eu diria queDatabase.CommandTimeout
é a coisa certa no caso de sua consulta exceder o tempo limite (System.Data.Entity.Core.EntityCommandExecutionException
contendo exceçãoSystem.Data.SqlClient.SqlException: Timeout expired.
).Respostas:
Tente isso no seu contexto:
Se você deseja definir o tempo limite na cadeia de conexão, use o
Connection Timeout
parâmetro como na seguinte cadeia de conexão:Fonte: Como: Definir a Cadeia de Conexão
fonte
ObjectContext
neste construtor às vezes os comandos do console do PowerShell / NuGet falharão de maneira circular .Você pode usar
DbContext.Database.CommandTimeout = 180;
É bem simples e não requer elenco.
fonte
Fluent API
formulário da EF.Meu contexto parcial se parece com:
Como saí do
SetCommandTimeOut
público, apenas as rotinas necessárias para levar muito tempo (mais de 5 minutos) são modificadas em vez de um tempo limite global.fonte
No código do construtor gerado, ele deve chamar
OnContextCreated()
Eu adicionei esta classe parcial para resolver o problema:
fonte
Estendi a resposta de Ronnie com uma implementação fluente para que você possa usá-la da seguinte maneira:
dm.Context.SetCommandTimeout(120).Database.SqlQuery...
fonte
Para o primeiro banco de dados, o Approach:
Ainda podemos defini-lo em um construtor, substituindo o modelo T4 ContextName.Context.tt desta maneira:
Database.CommandTimeout = 180;
é a mudança acutalmente.A saída gerada é esta:
Se você alterar seu modelo de banco de dados, esse modelo permanecerá, mas a classe atualy será atualizada.
fonte
System.Configuration.ConfigurationManager.AppSettings["keyname"]
@shasO mesmo que as outras respostas, mas como um método de extensão:
fonte
Acabei de encontrar este problema e o resolvi atualizando o arquivo de configuração do aplicativo. Para a conexão em questão, especifique "Tempo Limite da Conexão = 60" (estou usando a versão 5.0.0.0 da estrutura da entidade)
Configuração ConnectionTimeout
fonte
Você pode usar este simples:
dbContext.Database.SetCommandTimeout(300);
fonte