Extraire le code SQL d'Entity Framework Core IQueryable
Dans Entity Framework Core, l'obtention du code SQL généré par une requête IQueryable est cruciale pour le débogage et analyse des performances. Cependant, contrairement aux versions précédentes d'Entity Framework, ToTraceString n'est plus disponible dans EF Core.
EF Core 5/6
Dans les versions récentes d'EF Core (5.0 et ci-dessus), vous pouvez récupérer le code SQL à l'aide de la méthode ToQueryString() :
var query = _context.Widgets.Where(w => w.IsReal && w.Id == 42); var sql = query.ToQueryString();
EF Core 2.1.2 et versions antérieures
Pour les anciennes versions d'EF Core (2.1.2 et versions antérieures), vous pouvez utiliser le code suivant pour obtenir le code SQL :
public static string ToSql<TEntity>(this IQueryable<TEntity> query) { // ... (code omitted for brevity) ... }
Remarque que ce code nécessite une définition de méthode d'extension pour accéder aux champs internes d'EF Core.
EF Core 3.0
Dans EF Core 3.0, vous pouvez utiliser la méthode suivante :
public static string ToSql<TEntity>(this IQueryable<TEntity> query) { // ... (code omitted for brevity) ... }
Cette méthode nécessite également une définition de méthode d'extension pour accéder aux champs internes.
EF Core 3.1 et versions ultérieures
À partir d'EF Core 3.1, vous pouvez utilisez la méthode suivante :
public static string ToSql<TEntity>(this IQueryable<TEntity> query) where TEntity : class { // ... (code omitted for brevity) ... }
Cette méthode utilise la réflexion pour accéder aux champs internes et fournir du code SQL à partir des requêtes IQueryable.
L'équipe EF Core prévoit également d'introduire un moyen officiel d'obtenir du SQL code dans les versions futures.
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!