관련 데이터의 명시적 로드
명시적 로드
DbContext.Entry(...)
API를 통해 탐색 속성을 명시적으로 로드할 수 있습니다.
using (var context = new BloggingContext())
{
var blog = context.Blogs
.Single(b => b.BlogId == 1);
context.Entry(blog)
.Collection(b => b.Posts)
.Load();
context.Entry(blog)
.Reference(b => b.Owner)
.Load();
}
관련 엔터티를 반환하는 별도의 쿼리를 실행하여 탐색 속성을 명시적으로 로드할 수도 있습니다. 변경 내용 추적이 사용되는 경우 쿼리가 엔터티를 구체화하면 EF Core는 새로 로드된 엔터티의 탐색 속성을 이미 로드된 엔터티를 참조하도록 자동으로 설정하고, 이미 로드된 엔터티의 탐색 속성을 새로 로드된 엔터티를 참조하도록 설정합니다.
관련 엔터티 쿼리
탐색 속성의 내용을 나타내는 LINQ 쿼리를 가져올 수도 있습니다.
그러면 쿼리를 통해 다른 연산자를 적용할 수 있습니다. 예를 들면 메모리로 로드하지 않고도 관련 엔터티에 대해 집계 연산자를 적용하는 것입니다.
using (var context = new BloggingContext())
{
var blog = context.Blogs
.Single(b => b.BlogId == 1);
var postCount = context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Count();
}
메모리로 로드되는 관련 엔터티를 필터링할 수도 있습니다.
using (var context = new BloggingContext())
{
var blog = context.Blogs
.Single(b => b.BlogId == 1);
var goodPosts = context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Where(p => p.Rating > 3)
.ToList();
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET