2011-04-14 1 views
2

RIA 서비스를 사용하고 있습니다. 관련 하위 엔티티 (UnitOccupierDetails)가 여러 개인 상위 엔티티 (UnitOccupier)를 선택해야합니다. 단일 레코드를 반환하도록 자식 엔터티를 필터링해야합니다. 어떻게해야합니까?관련 하위 레코드를 필터링하는 방법

var q = from uo in _unitOccupierContext.GetUnitOccupierQuery() 
     where uo.UnitOccupierDetails.???? 
            ---> I cant get to the child properties here 

감사

답변

3

당신이 선택한 부모의 필터링 된 하위 집합을 포함 할 수 없습니다. 전체 모음 또는 하위 모음 만 포함 할 수 있습니다. 그러나 해결 방법으로 당신과 같이, 중간 익명 형식을 사용할 수

var q = (from uo in _unitOccupierContext.GetUnitOccupierQuery() 
     select new { 
      Parent = uo, 
      Childs = uo.UnitOccupierDetails 
         .Where(uod => uod.MyDetailsProp == MyDetailsValue) 
     }).FirstOrDefault(); 

if (q != null) 
{ 
    UnitOccupier selectedUnitOccupier = q.Parent; 
    selectedUnitOccupier.UnitOccupierDetails = q.Childs.ToList(); 
    // selectedUnitOccupier now only contains the filtered childs 
} 

편집

당신이 차일에 대한 조회 할과 (코멘트에서 질문 관련) 부모를 포함 할 경우 수 사용

var q = _unitOccupierContext.GetUnitOccupierQuery() 
     .SelectMany(uo => uo.UnitOccupierDetails 
          .Where(uod => uod.MyDetailsProp == MyDetailsValue)) 
     .Include(uod => uod.UnitOccupier) 
     .FirstOrDefault(); // or .ToList() if you expect more than one record 
// q is now null or a single UnitOccupierDetails entity 
// with a reference to its parent 

을 나는 당신의 UnitOccupierDetails 클래스는 부모 UnitOccupier에 대한 탐색 속성을 가지고 여기에 가정입니다.

+0

하위를 쿼리하고 부모를 포함 할 수 있습니까? – Greg

+0

@greg : 편집 내 대답을 참조하십시오. – Slauma

+0

업데이트 주셔서 감사합니다 - 나는 OwnerOccupierDetails 엔터티를 쿼리하고 필요한 엔터티로 필터링 해 보았습니다. 엔티티를 저장할 때까지 제대로 작동합니다. 엔티티가 부모를 필요로하고 데이터베이스에서 참조 오류가 발생하기 때문입니다. 위의 코드로 다시 시도하겠습니다 ... – Greg