問題:
急切載入Entity Framework 中的所有嵌套work 中的所有嵌套相關實體Core 2.0.1 已被證明具有挑戰性。具體來說,嵌套實體(例如訂單實體的“客戶”和“地址”)儘管嘗試加載,但仍保持為空。
嘗試:
嘗試過各種方法但沒有成功,包括:
解決方案:
目前,EF Core 中沒有內建功能用於預設預先載入所有巢狀相關實體。但是,有一些自訂擴充方法可以提供此功能:
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 }
用法:
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(); }
此用法示範了包含指定的實體類型。
以上是如何在 Entity Framework Core 中預先載入所有嵌套實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!