首頁 > 後端開發 > C++ > 如何在 Entity Framework Core 中預先載入所有嵌套實體?

如何在 Entity Framework Core 中預先載入所有嵌套實體?

Linda Hamilton
發布: 2025-01-01 04:10:10
原創
930 人瀏覽過

How to Eager Load All Nested Entities in Entity Framework Core?

使用Entity Framework Core 急切載入嵌套實體

問題:

急切載入Entity Framework 中的所有嵌套work 中的所有嵌套相關實體Core 2.0.1 已被證明具有挑戰性。具體來說,嵌套實體(例如訂單實體的“客戶”和“地址”)儘管嘗試加載,但仍保持為空。

嘗試:

嘗試過各種方法但沒有成功,包括:

  • 升級到 EF Core 2.1 並使用 LazyLoadingProxies設定為false.

解決方案:

目前,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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板