반응형
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
고객을 쿼리 할 때 예상대로 다음과 같은 여러 가지 쿼리를받습니다.
- 고객을 얻기위한 쿼리
- 자신의 책을 얻기위한 고객 별 쿼리
- 저자를 얻기위한 도서 별 쿼리
다음과 같은 책을 포함하여 쿼리 수를 줄일 수 있습니다.
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
ThenInclude
키워드 를 사용할 수 있습니다 .
var customers = db.Customers.Include(c => c.Books).ThenInclude(book => book.Author));}
반응형
'Development Tip' 카테고리의 다른 글
애플리케이션을 호스팅하는 dotnet.exe의 프로세스 ID를 확인하는 중에 오류가 발생했습니다. (0) | 2020.12.02 |
---|---|
asp.net에서 데이터 테이블 열의 합계를 계산하는 방법은 무엇입니까? (0) | 2020.12.02 |
onPrepareOptionsMenu가 메뉴 항목을 전환 할 때 ActionBar를 어떻게 새로 고칠 수 있습니까? (0) | 2020.12.02 |
JQuery의 텍스트 필드 값 지우기 (0) | 2020.12.02 |
Unix 쉘 스크립트에서 현재 날짜를 epoch로 가져옵니다. (0) | 2020.12.02 |