Rumah > pembangunan bahagian belakang > C++ > Bagaimana Bersemangat Memuatkan Semua Entiti Bersarang dalam Teras Rangka Kerja Entiti?

Bagaimana Bersemangat Memuatkan Semua Entiti Bersarang dalam Teras Rangka Kerja Entiti?

Linda Hamilton
Lepaskan: 2025-01-01 04:10:10
asal
931 orang telah melayarinya

How to Eager Load All Nested Entities in Entity Framework Core?

Bersemangat Memuatkan Entiti Bersarang dengan Teras Rangka Kerja Entiti

Masalah:

Bersemangat memuatkan semua entiti berkaitan bersarang dalam Rangka Kerja Entiti Teras 2.0.1 telah terbukti mencabar. Khususnya, entiti bersarang, seperti Pelanggan dan Alamat untuk entiti Pesanan, kekal batal walaupun terdapat percubaan untuk memuatkannya.

Percubaan:

Pelbagai pendekatan telah dicuba tanpa kejayaan. , termasuk:

  • Menaik taraf kepada EF Core 2.1 dan menggunakan LazyLoadingProxies ditetapkan kepada palsu.

Penyelesaian:

Pada masa ini, tiada ciri terbina dalam EF Core untuk tidak sabar-sabar memuatkan semua entiti berkaitan bersarang secara lalai. Walau bagaimanapun, terdapat kaedah sambungan tersuai yang boleh menyediakan kefungsian ini:

public static IQueryable<T> Include<T>(this IQueryable<T> source, IEnumerable<string> navigationPropertyPaths)
    where T : class
{
    return navigationPropertyPaths.Aggregate(source, (query, path) => query.Include(path));
}

public static IEnumerable<string> GetIncludePaths(this DbContext context, Type clrEntityType, int maxDepth = int.MaxValue)
{
    // Omitted for brevity
}
Salin selepas log masuk

Penggunaan:

public virtual async Task<IEnumerable<T>> GetAllAsync(Expression<Func<T, bool>> predicate = null)
{
    var query = Context.Set<T>()
        .Include(Context.GetIncludePaths(typeof(T));

    if (predicate != null)
        query = query.Where(predicate);

    return await query.ToListAsync();
}
Salin selepas log masuk

Penggunaan ini menunjukkan kemasukan semua laluan berkaitan untuk jenis entiti yang ditentukan.

Atas ialah kandungan terperinci Bagaimana Bersemangat Memuatkan Semua Entiti Bersarang dalam Teras Rangka Kerja Entiti?. 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