Maison > développement back-end > C++ > Comment afficher le code SQL généré par Entity Framework Core IQueryable ?

Comment afficher le code SQL généré par Entity Framework Core IQueryable ?

Barbara Streisand
Libérer: 2025-01-03 06:15:39
original
214 Les gens l'ont consulté

How Do I View the SQL Generated by Entity Framework Core IQueryable?

Comment afficher le SQL généré par Entity Framework Core IQueryable

Question :

Dans l'entité Framework Core, comment accéder au code SQL généré par un objet IQueryable ? La méthode ToTraceString(), disponible dans les versions précédentes, n'est pas présente dans EF Core.

Réponse :

EF Core 5/6 / Net 5/ 6

Pour EF Core 5 et 6 avec .NET 5 et 6, vous pouvez utiliser le Méthode ToQueryString() :

var query = _context.Widgets.Where(w => w.IsReal && w.Id == 42);
var sql = query.ToQueryString();
Copier après la connexion

Pour les anciennes versions de .NET Core, une méthode d'extension peut être utilisée :

Core 2.1.2

public static string ToSql<TEntity>(this IQueryable<TEntity> query)
{
    // Reflection and casting voodoo to get EF internal classes
    var sql = ...;

    return sql;
}
Copier après la connexion

EF Core 3.0

public static string ToSql<TEntity>(this IQueryable<TEntity> query)
{
    using (var enumerator = query.Provider.Execute<IEnumerable<TEntity>>(query.Expression).GetEnumerator())
    {
        // More reflection and casting voodoo
        var sql = ...;

        return sql;
    }
}
Copier après la connexion

EF Core 3.1

public static string ToSql<TEntity>(this IQueryable<TEntity> query) where TEntity : class
{
    using (var enumerator = query.Provider.Execute<IEnumerable<TEntity>>(query.Expression).GetEnumerator())
    {
        // Even more reflection and casting voodoo
        var sql = ...;

        return sql;
    }
}
Copier après la connexion

Remarque :

Pour les versions EF Core antérieures à 5, une réflexion est nécessaire pour récupérer le SQL généré par un IQueryable.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal