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
Lepaskan: 2025-01-03 06:15:39
asal
214 orang telah melayarinya

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();
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan