2012-04-19 5 views
0

저는 Entity Framework Code First를 사용하고 있습니다. 내가 만들려고하는 클래스에는 두 개의 컬렉션 (같은 유형의 컬렉션)이 포함되어 있습니다. 내 컬렉션을 복구하는 데 문제가 있습니다.Entity Framework 코드 우선 - 같은 형식의 컬렉션 복원

내 클래스는 다음과 같다 :

public class Destination 
{ 
    public int DestinationId { get; set; } 
    public string Name { get; set; } 
    public List<Lodging> Lodgings { get; set; }   
    public List<Lodging> Lodgings2 { get; set; } 
} 
public class Lodging 
{ 
    public int LodgingId { get; set; } 
    public string Name { get; set; } 
    public Destination Destination { get; set; } 
} 

나는 그때 재개, 새로운 대상을 만들어 데이터베이스 연결 (오픈 & 폐쇄). 대상을 검색 할 때 내 컬렉션 (dest.Lodgings 및 dest.Lodgings2)은 null입니다. 해당 컬렉션을 어떻게 복원합니까? 내 클래스는 특정 유형의 하나 개의 컬렉션이, 내가 할 수있는 다음

var lodgings = context.Lodgings.Where(l => l.Destination.DestinationId == destId).ToList(); 

나는 관계 데이터베이스 스키마 (Destination_DestinationId1 및 Destination_DestinationId2)에서 유지되는 것을 볼 수 있지만 내가 될 것 같지 않습니다 그 (것)들에게 얻을 수 있습니다. 제안 사항을 보내 주시면 감사하겠습니다.

+0

내가 내 자신의 질문에 대한 해결책을 발견했습니다

DbContext와 관련된 데이터를로드 할 수있는 다양한 방법에 대한 EF의 팀 블로그에 좋은 블로그 게시물이있다. "포함"은 그 일을합니다. 감사. var dest = context.Destinations.Include ("Lodgings"). 포함 ("Lodgings2"). ToArray(); – user1342718

답변

1

Include (사용자가 발견 한대로) (대상에서 검색되는 동시에 db의 관련 데이터를로드 함)를 사용하는 것 외에도 사실 이후에 숙박을 검색 할 수 있습니다. 따라서 목적지를 쿼리하면 이 표시되고을 입력하면 숙박이 가능합니다. 한 가지 방법은 Load 메서드를 사용할 명시 적로드라고합니다. 다른 하나는 게으른 로딩입니다. 클래스를 특정 방식으로 설정해야하고 Lodgings 속성의 으로 지정하면 데이터베이스 호출이 검색됩니다. http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx

HTH

줄리

+0

Julie 정보를 가져 주셔서 감사합니다. 그것은 매우 도움이되었습니다. 전문가의 의견을 듣기 좋습니다. Entity Framework Code First에 대한 귀하의 책은 환상적입니다. 나는 그것 없이는 내가 할 수 없었습니다. 다시 한 번 감사드립니다! – user1342718

관련 문제