Maison >développement back-end >C++ >Pourquoi ma commande Entity Framework expire-t-elle toujours malgré la configuration de la chaîne de connexion ?
Dépannage des délais d'expiration du cadre d'entité
Les délais d'attente du Persistent Entity Framework (EF), même après des ajustements de chaîne de connexion, sont un casse-tête courant, en particulier lorsque vous travaillez avec des ensembles de données importants. Cet article résout un problème connu dans lequel le paramètre CommandTimeout
de la chaîne de connexion est inefficace.
La solution : configuration directe du contexte
Le problème vient d'un bug affectant le Default Command Timeout
dans la chaîne de connexion EF. Pour résoudre ce problème, supprimez le Default Command Timeout
de votre chaîne de connexion et définissez explicitement le délai d'expiration dans votre contexte de données. L'approche correcte varie en fonction de votre version EF :
Pour Entity Framework Core 1.0 et versions ultérieures :
<code class="language-csharp">this.context.Database.SetCommandTimeout(180);</code>
Pour Entity Framework 6 :
<code class="language-csharp">this.context.Database.CommandTimeout = 180;</code>
Pour Entity Framework 5 :
<code class="language-csharp">((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;</code>
Pour Entity Framework 4 et versions antérieures :
<code class="language-csharp">this.context.CommandTimeout = 180;</code>
En définissant directement la propriété CommandTimeout
sur l'objet contextuel, vous contournez le paramètre de chaîne de connexion problématique et garantissez qu'EF gère correctement les opérations de longue durée. N'oubliez pas de remplacer 180
par la valeur de délai d'attente appropriée en secondes.
Trouver le délai d'attente optimal
L'expérimentation est la clé. Commencez avec une valeur plus élevée (par exemple, 180 secondes) et ajustez progressivement jusqu'à ce que vous trouviez un équilibre entre l'exécution efficace des requêtes et l'intégrité des données. Évitez les valeurs trop élevées pour éviter des retards inattendus.
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!