Entity Framework Core 2.0.1 中嵌套實體的急切載入
在Entity Framework Core 2.0.1 中,🎜>
在Entity Framework Core 2.0.1 中嵌套,嵌套,嵌套,嵌套的實體的實體急切載入是不是內建功能。當載入具有多個關係層級的實體時,這會成為問題,導致相互嵌套的相關實體出現空值。 要解決此挑戰,可以使用自訂擴充方法: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) { // Implementation 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 2.0.1 中急切載入嵌套的相關實體。這種方法提供了更全面的急切載入機制,消除了明確 Include 和 ThenInclude 語句的需要。
以上是如何在 Entity Framework Core 2.0.1 中有效率地預先載入嵌套實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!