먼저 모든 관계 개체를 메모리에로드하지 않고 다 대다 관계를 쿼리하는 가장 좋은 방법을 알고 싶습니다.Entity Framework 코드 우선 : 메모리에로드하지 않고 많은 탐색 속성으로 쿼리하기
예를 들어 카테고리 및 아티클은 다 대다 관계입니다. 내가 볼 수 있습니다 만 제품을 선택합니다
class Category
{
public long Id {get; set;}
public ICollection<Articles> Articles {get; set;}
}
, 나는과 같이 탐색 속성을 조회 할 수 있습니다 :
category.Articles.Where(a => a.IsVisible)
이 내 카테고리 클래스로 그래서 (게으른로드) 탐색 속성이 의미
그러나 알고있는 한 IsVisible 검사를 수행하기 전에 관련 기사가 모두 메모리에로드됩니다.
관련 아티클을 메모리에로드하지 않고 쿼리 할 수 있습니까? 즉 ICollection이 아닌 IQueryable에서 작동 할 수 있습니까? 이 일대 다 관계라면 나는 DbSet를 직접 질의하여 DbSet을 사용하여 쿼리를 수행 할 수 있었지만 많은 관계가 SQL의 링크 테이블에 저장되어 DbSet을 사용하여 쿼리 할 수 없었습니다. 링크 테이블을 쿼리 할 원시 SQL을 수동으로 작성하는 유일한 방법은 무엇입니까? 예를 들어, Contains
를 사용하여,
var visibleArticlesQuery = context.Category.Where(c => c.Id == category.Id)
.SelectMany(c => c.Articles)
.Where(a => a.IsVisible);
그것은 제 DbSet를 조회 할 수도 있습니다
완벽하게 작동합니다. 감사합니다. – chrisn