Problèmes de délai d'attente d'Entity Framework et solutions pour les opérations de longue durée
Dans Entity Framework (EF), les opérations de longue durée, telles que les importations de fonctions, peuvent parfois provoquer des délais d'attente dépassant le seuil par défaut de 30 secondes. La résolution de ce problème nécessite de comprendre la méthode de configuration correcte.
Résoudre le problème de délai d'expiration des commandes par défaut
Une solution consiste à modifier la chaîne de connexion dans le fichier App.Config et à ajouter « Default Command Timeout=300000 ». Cependant, comme le montre l’exemple, cette méthode ne fonctionne pas. Au lieu de cela, CommandTimeout doit être défini directement dans la classe du référentiel :
<code class="language-csharp">public IEnumerable<trekmatches> GetKirksFriends() { this.context.CommandTimeout = 180; return this.context.GetKirksFriends(); }</code>
Cela garantit que les délais d'attente sont spécifiquement définis pour les opérations pertinentes.
Remplacer les paramètres de délai d'expiration de la chaîne de connexion
Il est important de noter que la spécification d'un délai d'attente de commande par défaut dans la chaîne de connexion peut entrer en conflit avec un délai d'attente de commande défini manuellement dans le référentiel. Pour éviter ce problème, supprimez le paramètre de délai d'attente de la chaîne de connexion.
Version de bug et d'entité Framework
Il existe un bug EF connu dans la spécification du délai d'expiration de la commande par défaut dans la chaîne de connexion. Ce bug peut être résolu en définissant le délai d'attente directement sur l'objet de contexte de données. La syntaxe varie selon la version EF utilisée :
Entity Framework Core 1.0 :
<code class="language-csharp">this.context.Database.SetCommandTimeout(180);</code>
Cadre d'entité 6 :
<code class="language-csharp">this.context.Database.CommandTimeout = 180;</code>
Cadre d'entité 5 :
<code class="language-csharp">((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;</code>
Entity Framework 4 et versions antérieures :
<code class="language-csharp">this.context.CommandTimeout = 180;</code>
En implémentant ces paramètres, vous pouvez résoudre efficacement le problème de l'expiration du délai EF lors d'opérations de longue durée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!