2009-04-27 4 views
0

다음 데이터를 검색하기 위해 하나의 데이터베이스 호출을 만들고 싶습니다. 그러나 LINQ의 모양을 파악하는 데 어려움을 겪고 있습니다.ADO.NET 엔터티에서 한 데이터베이스의 레코드 및 모든 하위 레코드를 검색하는 방법은 무엇입니까?

  • 모든 사진을 특정 사진 갤러리에서 :
      내가 검색하려는 위에서 볼 수 있듯이 그래서

      var photos = from photo in entitiesContext.Photo 
            join pg in entitiesContext.PhotoGallery on photo.PhotoGallery.PhotoGalleryID equals pg.PhotoGalleryID 
            where pg.PhotoGallery == photoGalleryID 
            select photo; 
      
      var photoList = photos.ToList(); 
      
      foreach (var photoForLoading in photoList) 
      { 
          photoForLoading.UserReference.Load(); 
          photoForLoading.PhotoComments.Load(); 
      
          foreach (var comment in photoForLoading.PhotoComment) 
          { 
           comment.UserReference.Load(); 
          } 
      } 
      
      return photoList; 
      

      : 여기 내 현재의 구현 (나는 나쁜 알고!)입니다 각 사진에

    • 사용자 정보 각 사진
      • 목에
      • 코멘트 ADO.NET 엔티티 프레임 워크

가 어떻게 LINQ에서이 작업을 수행 할 각 주석에 전자 사용자 세부 사항?

건배, 애쉬.

답변

6

.Include 메서드를 사용하여 관련 엔터티를로드합니다. 예를 들면 : 당신하여 ObjectQuery를 만들 때

from photo in entitiesContext.Photo 
          .Include("UserReference") 
          .Include("PhotoComments") 
etc... 
+0

이렇게하면 SQL 서버에 몇 개의 내부 조인이있는 하나의 SQL 문이 전송된다고 가정합니다. 또한 사진에 주석이 포함되어 있지 않을 수도 있습니다. 왼쪽 외부 결합의 일부 형식을 수행해야합니까? – Ash

+0

아니요 주석이 있으면 값을 가지며, 주석이 없으면 NULL을 갖습니다. null이 충분한 지 확인하십시오. – mhenrixon

1

가 자동으로로드 할 subentity의 이름으로 전달 방법을 포함 호출합니다. 로드하려는 하위 하위 항목이 여러 개있는 경우 포함 호출을 연결할 수 있습니다.

자세한 내용은 article을 참조하십시오.