Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Melihat SQL Dijana oleh Rangka Kerja Entiti Teras IQueryable?

Bagaimanakah Saya Melihat SQL Dijana oleh Rangka Kerja Entiti Teras IQueryable?

Barbara Streisand
Barbara Streisandasal
2025-01-03 06:15:39265semak imbas

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

Cara Melihat SQL Dijana oleh Entiti Rangka Kerja Teras IQueryable

Soalan:

Dalam Entiti Teras Rangka Kerja, bagaimana anda mengakses kod SQL yang dihasilkan oleh objek IQueryable? Kaedah ToTraceString(), tersedia dalam versi terdahulu, tidak terdapat dalam EF Core.

Jawapan:

EF Core 5/6 / Net 5/ 6

Untuk EF Core 5 dan 6 dengan .NET 5 dan 6, anda boleh menggunakan Kaedah ToQueryString():

var query = _context.Widgets.Where(w => w.IsReal && w.Id == 42);
var sql = query.ToQueryString();

Untuk versi .NET Core yang lebih lama, kaedah sambungan boleh digunakan:

Teras 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;
}

Teras EF 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;
    }
}

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;
    }
}

Nota:

Untuk versi EF Core sebelumnya hingga 5, refleksi diperlukan untuk mendapatkan semula SQL yang dijana oleh IQueryable.

Atas ialah kandungan terperinci Bagaimanakah Saya Melihat SQL Dijana oleh Rangka Kerja Entiti Teras IQueryable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn