Voir une requête générée par Linq To SQL

icon Tags de l'article : , ,

Mars 19, 2014
Une question qui revient assez souvent lorsqu'on travaille avec Linq To Sql : comment peut-on faire pour voir une requête SQL générée ?

Certains vous recommenderont d'utiliser Linqpad, ce qui est effectivement une solution...

Mais il y a bien plus simple : utiliser la méthode .ToString() sur notre objet IQueryable.
Cette méthode (qui surcharge en fait ObjectQuery.ToTraceString()) renverra tout simplement la requête SQL générée par Linq To Sql !

Exemple :

using (var dc = new DataClassesVideoGameDataContext())
{
    var result = dc.VideoGames.Where(e => e.Price < 70).OrderBy(e => e.Name);

    var query = result.ToString();

    // query : 
    // SELECT [t0].[IdVideoGame], [t0].[Name], [t0].[Description], [t0].[Price]
    // FROM [dbo].[VideoGame] AS [t0]
    // WHERE [t0].[Price] < @p0
    // ORDER BY [t0].[Name]
}

Bon dev à tous !