2013-03-31 1 views
0

코드를 사용하여 데이터베이스를 구성했습니다. 구체적인 유형으로 프로젝션을 사용하여 쿼리하는 것이 훨씬 빠른 방법인데, Include 문을 사용하는 것보다 빠릅니다. 그러나 나는 다음과 같은 문제로 실행하십시오 .Tasks = 부분이 실행될 때Linq를 사용하여 탐색 속성을 프로젝트에 투영하는 방법은 무엇입니까?

dim records=(From record in db.SomeDbSet 
      Where record.UserID=userID 
      Select New UserSpecificRecord With 
      { .Name=record.User.Name 
       .Tasks=record.Tasks 
      }).ToList 

나는에 따라 유효하지 않은 캐스트 예외에서, 엔티티 프레임 워크는 쿼리의이 종류를 지원하지 않는 메시지에 이르기까지, 다양한 오류가 발생할 수 컬렉션 유형 UserSpecificRecord 클래스의 Tasks 속성을 만듭니다. 나는에 코드를 변경하면

:

Dim records= (From record in db.SomeDbSet 
       Where record.UserID=userID 
       Select New With 
       { .Name=record.User.Name 
        .Tasks=record.Tasks 
       }).ToList 

    dim userRecords=(From record in records 
        Select New UserSpecificRecord With 
        { .Name=record.Name 
        .Tasks=record.Tasks 
        }).ToList 

즉 : 나는 익명의 유형에 투영하고 구체적인 유형의 모든 작품을 구축 할 수 있습니다. 나는 콘크리트 형으로 직접 투영 할 수 있기를 매우 원합니다. 할 수 있습니까?

답변

1

'엔터티'에 투영 할 수 없습니다 (UserSpecificRecord도 매핑되어 있습니까? 이름으로 보입니다).
'구체적인 수업'에 관한 것이 아닙니다.

이 대답 The entity cannot be constructed in a LINQ to Entities query

+0

을 참조하십시오 'UserSpecifiedRecord'엔터티 편리 내가 작업하는 데 필요한 데이터를 집계 단지 클래스입니다. – Dabblernl

+0

코드가 없으면 이렇게 말하기 어렵습니다. 귀하의 축소 형 모델 (관련 엔터티)을 게시 할 수있어서 실행할 수 있습니다 - 그리고 귀하의 '구체적인'클래스도. 그리고 나는 실제로 그것이 무언가 (당신이 에러의 범위를 언급 한 것처럼) 일 수 있고, EF가 관련 될 수 있다고 생각합니다. btw. 당신은 코드 첫 번째 또는 db- 첫 번째를 사용합니까 – NSGaga

+0

충분히 생각해야합니다 : 레코드, 사용자 및 작업, 레코드에는 많은 작업이 있고 사용자는 많은 레코드가 있습니다. UserSpecificRecord는 DTO입니다. – Dabblernl

관련 문제