2012-12-08 7 views
0

저는 Entity Framework를 처음 사용하기 때문에 ID로 부모를로드 할 수 있습니다.Entity Framework 4에서 부모로부터 자식 가져 오기

하지만 부모를로드 한 후에 부모로부터 자식 속성에 액세스하려고합니다.

Employe employe = db.Employes.Include(e=>e.Address).SingleOrDefault(p => p.Id == 3); 

또는 탐색 속성이 가상 경우 당신은 게으른 평가를 사용할 수 있습니다 : 당신이 사용할 수있는

protected void getChild_Click(object sender, EventArgs e) 
    { 
     JeansEntities db = new JeansEntities(); 
     Employe employe = db.Employes.SingleOrDefault(p => p.Id == 3); 

     uxCountry.Text = //(address.Country) Its the child of Employe, but I can acces by the parent 
    } 

enter image description here

감사

+0

나는 두 답변의 코드 라인을 수행하며 여전히 주소 아이디에 액세스 할 수 있습니다. – FrankSharp

+0

다이어그램에 따르면 직원은 여러 주소를 가지고 있습니다. 그 중 어느 쪽을 기대합니까? –

답변

1

당신은 쿼리 당신은 또한 주소 아이를 원하는 것을 알 수 있도록함으로써이를 달성 할 수 있어야합니다. "열망하는로드"를 사용하여이 작업을 수행 할 수 있습니다. 이 당신이 EDM에서 EmployeAddresses 사이의 관계를 포함해야 작동하려면이를 위해서는 Include("NavigationPropertyName")

protected void getChild_Click(object sender, EventArgs e) 
{ 
    JeansEntities db = new JeansEntities(); 
    Employe employe = db.Employes.Include("Addresses") 
     .SingleOrDefault(p => p.Id == 3); 

    var address = employe.Addresses.FirstOrDefault(); 

    if (address != null) 
     uxCountry.Text = address.Country; 
} 

하여 수행됩니다.

+0

이것은 작동하지 않습니다 ... – FrankSharp

+1

그의 모델 Employee에 따르면, 여러 개의 주소가 있습니다. –

+0

예 고용주는 2 개의 주소 또는 하나를 가질 수 있습니다. – FrankSharp

0

은 LINQ 쿼리에 포함합니다. 이 경우 DBContext db가 삭제되지 않은 경우 var address = employe.Address을 사용할 수 있으며 EF는 데이터베이스에서 데이터베이스를 가져옵니다.

업데이트 : 당신은 #using System.Data.Entity;

+0

이것은 작동하지 않습니다 ... – FrankSharp

+0

증상은 무엇입니까? 컴파일합니까? 그것은 어떤 예외를 던지거나 무엇을 던집니까? –

+0

Employe employe = db.Employes.Include (c => c.Addresses) .SingleOrDefault (p => p.Id == 3); 오류 λ 형식이 대리자 형식이 아니기 때문에 'string'형식으로 변환 할 수 없습니다. – FrankSharp

관련 문제