Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memuatkan Entiti Bersarang dengan Cekap dalam Rangka Kerja Entiti Teras 2.0.1?

Bagaimanakah Saya Boleh Memuatkan Entiti Bersarang dengan Cekap dalam Rangka Kerja Entiti Teras 2.0.1?

Mary-Kate Olsen
Lepaskan: 2024-12-26 05:13:10
asal
250 orang telah melayarinya

How Can I Efficiently Eager Load Nested Entities in Entity Framework Core 2.0.1?

Pemuatan Bersemangat Entiti Bersarang dalam Teras Rangka Kerja Entiti 2.0.1

Dalam Rangka Kerja Entiti Teras 2.0.1, pemuatan entiti bersarang adalah bukan ciri terbina dalam. Ini menjadi bermasalah apabila memuatkan entiti dengan pelbagai peringkat perhubungan, menyebabkan nilai nol untuk entiti berkaitan bersarang antara satu sama lain.

Untuk menangani cabaran ini, kaedah sambungan tersuai boleh digunakan:

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

Kaedah ini membenarkan pemuatan bersungguh-sungguh berbilang sifat navigasi yang dinyatakan sebagai rentetan.

Kaedah sambungan tersuai lain boleh digunakan untuk jana laluan untuk dimasukkan berdasarkan metadata jenis entiti:

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

Kaedah ini mengambil jenis entiti dan kedalaman maksimum pilihan serta mengembalikan senarai laluan sertakan.

Dengan menggabungkan kaedah sambungan ini ke dalam kaedah repositori generik:

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

Kini boleh memuatkan yang berkaitan dengan bersarang dengan penuh semangat entiti dalam Rangka Kerja Entiti Teras 2.0.1. Pendekatan ini menyediakan mekanisme pemuatan bersemangat yang lebih komprehensif, menghapuskan keperluan untuk pernyataan Sertakan dan Kemudian Sertakan secara eksplisit.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan Entiti Bersarang dengan Cekap dalam Rangka Kerja Entiti Teras 2.0.1?. 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