web-dev-qa-db-fra.com

Débogueur VS2013 + Entity Framework: "le moteur d'exécution a refusé d'évaluer l'expression", se bloque

Je rencontre beaucoup de problèmes avec Entity Framework 6.0.1 dans le débogueur Ultimate VS2013 lors du débogage dans des tests unitaires avec du code qui frappe un serveur SQL Server actif.

Les variables contenant des entités ne peuvent pas être visualisées dans le débogueur. Par exemple, si j'exécute une requête LINQ sur mon DbContext et que j'actualise la vue des résultats pour qu'elle soit exécutée, la valeur de Results est "les enfants n'ont pas pu être évalués". Si I ToArray () le, alors maintenant la variable est un tableau d'entités au lieu d'un IQueryable, chaque résultat dans le tableau est "Impossible d'évaluer l'expression". Si je stocke une seule valeur d'entité de ce tableau dans une variable et que je tente de l'afficher, le message "Le moteur d'exécution a refusé d'évaluer l'expression à ce stade".

"The runtime has refused to evaluate the expression at this time"

Il est fréquent que F10 passant par une ligne impliquant l'accès à une propriété d'entité provoque le blocage de Visual Studio.

Cela n'arrivera pas si je lance le test contre un faux DbSet simulé.

Est-ce un problème connu? Y'a t'il un moyen d'arranger cela?

38
nlawalker

J'ai un problème similaire et bien que je ne sois pas encore compris pourquoi, tourner Options -> Débogage -> Général -> Utiliser le mode de compatibilité gérée - Activé, m'a permis de poursuivre le débogage normalement.

J'ai trouvé cette option via ce blog post .

82
MrEdmundo

Peu de temps après l'installation de VS2013, j'ai aussi rencontré l'erreur 

"Impossible d'évaluer l'expression"

pour de nombreuses variables lors du débogage d'une ancienne solution VS2012 (aucun code ne faisait appel à la structure d'entité).

Le correctif qui fonctionnait supprimait les deux Solution User Options (*.suo) fichiers associés au fichier de solution. Par exemple, pour MySolution.sln, les deux fichiers correspondants étaient:

  • MySolution .v11 .suo (version VS2012)
  • MySolution .v12 .suo (version VS2013)

Il semble que la version v12 ait peut-être été corrompue lors de sa création à l'aide des paramètres de la version v11. Par conséquent, leur suppression permettait de créer un nouveau fichier .suo propre pour VS2013 et le problème disparaissait.

(Notez que les fichiers .suo sont marqués comme masqués sous Windows 7, de sorte que vous ne pourrez peut-être pas les voir facilement dans l'Explorateur Windows sans soit modification des paramètres afin de les afficher , ni l'utilisation de la ligne de commande pour les afficher.)

7
Ray Vega

Je voulais juste ajouter ma voix à la foule ici.

Je développe une application UWP, n'utilisant pas Entity Framework, et j'ai rencontré un problème similaire dans lequel le moteur d'exécution "a refusé d'évaluer l'expression".

J'utilisais Microsoft Visual Studio Enterprise 2015 Mise à jour 2 et la solution pour moi était de mettre à jour vers Update 3 .

0
Zach Posten

Il peut y avoir un problème de débogage s'il existe une entité avec des entités virtuelles à l'intérieur de . Nous avons rencontré ce problème lorsque nous avons essayé de déboguer des entités situées dans la portée Ef . Entity Framework, puis à intercepter l'état des entités virtuelles.

Nous avons obtenu un meilleur résultat en consultant les entités situées en dehors de la portée de la base de données. .__ De cette façon, EF n’est pas impliqué dans le contrôle des valeurs des entités.

0
user2996484

Visual Studio 2013 Update 2 promet de corriger cette erreur, trouvée dans les commentaires à l'adresse:

http://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio-2013-Could-not-evaluate-Expression-Debugger-Abnormality

0
Nick