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:
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 }
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(); }
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!