Development Tip

Entity Framework Code First에 엔터티의 자식 및 손자 요소를 어떻게 열심히 포함합니까?

yourdevel 2020. 12. 2. 22:02
반응형

Entity Framework Code First에 엔터티의 자식 및 손자 요소를 어떻게 열심히 포함합니까?


다음과 같이 관련된 세 개의 엔티티 (고객, 도서, 저자)를 상상해보십시오.

고객이 많은 책을 가지고 있습니다.

책에는 한 명의 저자가 있습니다.

이 데이터를 사용하여 다음과 같은 보고서를 인쇄합니다.

Customer: Peter
  Book: To Kill a Mockingbird - Author: Harper Lee
  Book: A Tale of Two Cities - Author: Charles Dickens
Customer: Melanie
  Book: The Hobbit - Author: J. R. R. Tolkien

고객을 쿼리 할 때 예상대로 다음과 같은 여러 가지 쿼리를받습니다.

  1. 고객을 얻기위한 쿼리
  2. 자신의 책을 얻기위한 고객 별 쿼리
  3. 저자를 얻기위한 도서 별 쿼리

다음과 같은 책을 포함하여 쿼리 수를 줄일 수 있습니다.

var customers = db.Customers.Include (c => c.Books);

하지만 세 번째 수준 (저자)을로드하는 방법을 모르겠습니다. 어떻게 할 수 있습니까?


Include필요한 추가 속성에 대한 전체 경로를 나타낼 수있는 문자열을 허용 하는 오버로드 가 있습니다.

var customers = db.Customers.Include("Books.Author");

"저자"는 책 모음에 대한 속성이 아니기 때문에 이상해 보이지만 (각 개별 책의 속성이 아니라) 작동합니다. 소용돌이를 줘.


또한 문자열 오버로드를 사용할 필요가 없습니다. 이 방법도 작동합니다.

var customers = db.Customers.Include(c => c.Books.Select(b => b.Author));

더 많은 예제를 보려면 EF 팀 블로그 게시물 : http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading- related-entities.aspx

그리고이 튜토리얼 : http://www.asp.net/entity-framework/tutorials/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application


ThenInclude키워드 를 사용할 수 있습니다 .

var customers = db.Customers.Include(c => c.Books).ThenInclude(book => book.Author));}

참고 URL : https://stackoverflow.com/questions/5905716/how-do-i-eagerly-include-the-child-and-grandchild-elements-of-an-entity-in-entit

반응형