2009-06-11 3 views
4

현재 연결된 개체가 여러 개인 데이터베이스가 있습니다. 적은 개체 간체Entity Framework 다중 레벨 연결로드 중

:

Song => Versions => Info 
      || 
      \/ 
     Data 

지금 나는 이것이 원인이됩니다 그냥 데이터로 한 노래를 할 때 나는, 그러나

db.Song.include("Versions.Data").Include("Versions.Info").ToList(); 

을 열망로드 이러한 모든 개체를 사용 할 수있을 때 이해 모든 노래와 모든 참조를로드합니다.

인가가 더 쉬운 방법 같은 :

db.Song.First().include("Versions.Data").Include("Versions.Info") 

아니면 내가 정말 사용해야합니까 :

Song.Versions.Load(); 
foreach(Version version in versions) 
{ 
    version.DataReference.Load(); 
    version.InfoReference.Load(); 
} 

몇 관련 개체가 있다면 그것은 가능 하죠,하지만 난 10 같은 데 서브 오브젝트 자체가있는 오브젝트 ...

더 나은 방법을 보여주십시오.

답변

1

당신은이 쓰기 :

var song = (from s in db.Song.Include("Versions.Data").Include("Versions.Info") 
      where s.ID == 1 // i.e. some filter here 
      select s).First(); 

만약이 사실은 '포함'(당신이 당신의 where 절에서 흥미로운 일을 할 경우 실패 할 수 있습니다)이 팁을 확인하기위한 작업을 수행하지 않는 몇 가지 이유 해결 방법 : Tip 22 - How to make Include really Include

는 희망이

알렉스

+0

하지만 처음에는 모든 노래와 참조를로드 한 다음 첫 번째 노래를 선택하지 않습니까? IE : 실제로 id = 1 인 노래의 참조 만로드합니까? – Peterdk

+0

노래 1에 대한 참조 만로드합니다. –

0

을하는 데 도움이 또한

(VB에서)처럼 쓸 수
dim song = db.Song.Include("Versions.Data").Include("Versions.Info").Where(Function(s) s.ID = 1).FirstOrDefault()