로드 메서드

엔터티를 사용하여 즉시 아무 작업도 수행하지 않고 데이터베이스에서 컨텍스트로 엔터티를 로드하려는 경우가 몇 가지 있을 수 있습니다. 한 가지 좋은 예는 로컬 데이터에 설명된 대로 데이터 바인딩에 대한 엔터티를 로드하는 것입니다. 이 작업을 수행하는 일반적인 방법 중 하나는 LINQ 쿼리를 작성한 다음 ToList를 호출하여 만든 목록을 즉시 삭제하는 것입니다. Load 확장 메서드는 목록을 전혀 만들지 않는다는 점을 제외하고 ToList와 동일하게 작동합니다.

이 토픽에서 설명하는 방법은 Code First 및 EF 디자이너를 사용하여 만든 모델에 동일하게 적용됩니다.

다음은 Load를 사용하는 두 가지 예제입니다. 첫 번째는 로컬 데이터에 설명된 대로 로컬 컬렉션에 바인딩하기 전에 Load를 사용하여 엔터티를 쿼리하는 Windows Forms 데이터 바인딩 애플리케이션의 화면입니다.

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    _context = new ProductContext();

    _context.Categories.Load();
    categoryBindingSource.DataSource = _context.Categories.Local.ToBindingList();
}

두 번째 예제는 관련 엔터티 로드에 설명된 대로 Load를 사용하여 관련 엔터티의 필터링된 컬렉션을 로드하는 방법을 보여 줍니다.

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Find(1);

    // Load the posts with the 'entity-framework' tag related to a given blog
    context.Entry(blog)
        .Collection(b => b.Posts)
        .Query()
        .Where(p => p.Tags.Contains("entity-framework"))
        .Load();
}