Maison > développement back-end > C++ > Comment résoudre efficacement les délais d'attente d'Entity Framework pour les opérations de longue durée ?

Comment résoudre efficacement les délais d'attente d'Entity Framework pour les opérations de longue durée ?

DDD
Libérer: 2025-01-09 14:56:41
original
591 Les gens l'ont consulté

How to Effectively Resolve Entity Framework Timeouts for Long-Running Operations?

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>
Copier après la connexion

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>
Copier après la connexion

Cadre d'entité 6 :

<code class="language-csharp">this.context.Database.CommandTimeout = 180;</code>
Copier après la connexion

Cadre d'entité 5 :

<code class="language-csharp">((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;</code>
Copier après la connexion

Entity Framework 4 et versions antérieures :

<code class="language-csharp">this.context.CommandTimeout = 180;</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal