Comment puis-je trace une requête LINQ lors de l'utilisation PredicateBuilder / AsExpandable?

StackOverflow https://stackoverflow.com/questions/1466511

  •  13-09-2019
  •  | 
  •  

Question

J'utilise PredicateBuilder, ce qui signifie que je suis en utilisant la méthode d'extension AsExpandable. Le problème est que je ne peux plus tracer mes requêtes SQL comme l'erreur suivante est levée lorsque je tente de lancer la requête ObjectQuery afin que je puisse faire un ObjectQuery.ToTraceString () appeler sur elle ...

Impossible de coulée objet de type 'LinqKit.ExpandableQuery`1 [Genesis.Person]' taper 'System.Data.Objects.ObjectQuery'.

Des idées?

Était-ce utile?

La solution

Je recommande l'exécution d'un Dump () sur votre requête dans LINQPad , et en utilisant l'onglet SQL pour voir ce que SQL a été généré. Pour ce faire, faire, brancher LINQPad à votre contexte Entity Framework, appuyez sur F4 pour inclure une référence à LinqKit.dll et LinqKit comme une importation d'espace de noms. Faites-moi savoir si vous avez besoin de conseils supplémentaires sur la façon de le faire.

Autres conseils

Utilisez le PredicateBuilder universel suivant au lieu de LinqKit:

http://petemontgomery.wordpress.com/2011/02 / 10 / a-universel PredicateBuilder /

Alors ObjectQuery.ToTraceString () fonctionnera comme prévu.

Je ne connais pas votre problème précis, mais pouvez-vous pas exécuter la trace sur le serveur SQL au lieu d'utiliser (par exemple, en supposant profileur MSSQL)?

Ce serait encore vous permettre de voir les requêtes exécutées et vous pouvez le limiter à être votre machine qui est enregistré ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top