문제:
Entity Framework에서 모든 중첩된 관련 엔터티를 즉시 로드합니다. Core 2.0.1은 어려운 것으로 입증되었습니다. 특히 주문 엔터티의 고객 및 주소와 같은 중첩 엔터티는 로드 시도에도 불구하고 null로 유지됩니다.
시도:
다양한 접근 방식이 시도되었지만 성공하지 못했습니다. , 다음을 포함:
해결책:
현재 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!