Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memuatkan Entiti Bersarang dengan Cekap dalam Rangka Kerja Entiti Teras 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)); }
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 }
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(); }
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!