2015-09-10 1 views
1

J'utilise EF6 (complètement à jour) avec SQL Server 2012 Express et MVC 5. J'ai commencé à voir une nouvelle erreur aujourd'hui - une requête spécifique expire. Tout le reste fonctionne correctement, juste cette requête expire. Comment puis-je déboguer cela pour comprendre pourquoi cette requête spécifique expire? C'est une nouvelle erreur, comme je l'ai dit, et seule cette requête le fait (tous les autres fonctionnent dans un laps de temps minimal, comme prévu). J'utilise MiniProfiler sur le site s'il y a un moyen que je peux utiliser pour vérifier les choses, mais je n'ai que SSMS Express, donc je ne peux pas utiliser Profiler.Déboguer les délais d'attente Entity Framework

Répondre

1

Vous pouvez créer une nouvelle classe héritant de DbCommandInterceptor (https://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.interception.dbcommandinterceptor%28v=vs.113%29.aspx).

Dans ce cas, remplacez les méthodes ReaderExecuted, NonQueryExecuted, ScalarExecuted. Dans chacune de ces méthodes, il y a un paramètre interceptionContext, qui a la propriété Exception avec une exception lors de l'exécution de la commande donnée (le cas échéant). Inspectez cette propriété, et si c'est l'exception de délai d'attente - journal DbCommand.CommandText et paramètres. Puis, en utilisant cette information, essayez de comprendre ce qui ne va pas en utilisant SSMS et la requête sql brute que vous avez.

oublié de dire - ne pas oublier de faire

DbInterception.Add(new YourDbInterceptor()); 

quelque part sur votre démarrage d'application \ initialisation.