Votre problème avec les délais d'expiration des requêtes EF 6, malgré l'efficacité du SQL dans SSMS, suggère le reniflage des paramètres. Pour résoudre ce problème, considérez les points suivants :
EF peut-il intégrer l'indice "OPTION RECOMPILE" ?
Oui, EF 6 permet l'interception des commandes SQL avant l'exécution. Vous pouvez ajouter l'indice "OPTION RECOMPILE" en implémentant un IDbCommandInterceptor. Voici un exemple d'implémentation :
public class OptionRecompileHintDbCommandInterceptor : IDbCommandInterceptor { public void AddQueryHint(IDbCommand command) { if (command.CommandType != CommandType.Text || !(command is SqlCommand)) return; if (command.CommandText.StartsWith("select", StringComparison.OrdinalIgnoreCase) && !command.CommandText.Contains("option(recompile)")) { command.CommandText = command.CommandText + " option(recompile)"; } } // Implementation of other interface methods... }
Pour utiliser cet intercepteur, ajoutez-le simplement à votre application au début :
DbInterception.Add(new OptionRecompileHintDbCommandInterceptor());
Autres considérations
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!