EF Core에 자체 참조 범주 테이블 구조 매핑
문제는 범주와 같은 계층 구조를 검색하는 복잡성으로 인해 발생합니다. EF Core 및 LINQ의 제한 사항 내에서 ParentId 열이 있는 테이블입니다. 이 문제를 해결하기 위해 범주를 수동으로 탐색하고 ChildCategories 속성을 채우는 재귀 함수가 사용되었습니다.
그러나 EF Core의 전체 기능을 활용하는 보다 효율적인 솔루션이 등장했습니다.
사용 단일 포함
트리의 일부를 로드하려는 이전 시도와는 달리 포함(), 이 접근 방식에는 ChildCategories 속성에 대한 단일 포함()이 포함됩니다. 이는 쿼리를 LINQ to Objects 컨텍스트로 구체화하는 것과 결합되어 EF Core의 탐색 속성 수정이 매핑을 처리하도록 허용합니다.
필터링을 사용한 최적화된 검색
To 저장소의 GetAll() 메서드에서 요구하는 대로 카테고리 트리의 루트 노드만 검색하며, 쿼리가 완료된 후 필터가 적용됩니다. 구체화:
return Table .AsEnumerable() .Where(x => x.ParentId == null) .ToList();
AsEnumerable()을 사용하여 쿼리를 LINQ to Objects 컨텍스트로 구체화하면 필터링이 적용되기 전에 탐색 속성이 수정됩니다. 그 결과 재귀 함수 없이도 원하는 계층 구조를 효과적으로 검색하는 단일 SQL 쿼리가 생성됩니다.
위 내용은 EF Core는 계층적 데이터 검색을 위해 자체 참조 범주 테이블을 어떻게 효율적으로 매핑할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!