Estou recebendo tempos limite usando o Entity Framework (EF) ao usar uma função de importação que leva mais de 30 segundos para ser concluída. Tentei o seguinte e não consegui resolver esse problema:
Eu adicionei Default Command Timeout=300000
para a seqüência de conexão no App.Config arquivo no projeto que tem o arquivo EDMX como sugerido aqui .
É assim que minha cadeia de conexão se parece:
<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" />
Tentei definir o CommandTimeout no meu repositório diretamente da seguinte maneira:
private TrekEntities context = new TrekEntities();
public IEnumerable<TrekMatches> GetKirksFriends()
{
this.context.CommandTimeout = 180;
return this.context.GetKirksFriends();
}
O que mais posso fazer para que o EF atinja o tempo limite? Isso acontece apenas para conjuntos de dados muito grandes. Tudo funciona bem com pequenos conjuntos de dados.
Aqui está um dos erros que estou recebendo:
System.Data.EntityCommandExecutionException: ocorreu um erro ao executar a definição de comando. Consulte a exceção interna para obter detalhes. ---> System.Data.SqlClient.SqlException: tempo limite expirado. O período de tempo limite decorrido antes da conclusão da operação ou o servidor não está respondendo.
OK - Eu consegui isso e é bobagem o que aconteceu. Eu tinha a string de conexão com Default Command Timeout=300000
e o CommandTimeout definido como 180. Quando removi a Default Command Timeout
string de conexão, ela funcionou. Portanto, a resposta é definir manualmente o CommandTimeout no seu repositório no seu objeto de contexto da seguinte maneira:
this.context.CommandTimeout = 180;
Aparentemente, definir as configurações de tempo limite na cadeia de conexão não tem efeito sobre ela.
"
na string.
NONCLUSTERED
índices a algumas das tabelas, isso resolveu o problema de tempo limite para nós.