2011-02-11 4 views
5

우리는 Entity Framework가 우리의 특정 요구를 충족시키는 지 확인하기 위해 Entity Framework를 조사하고 있습니다. 여기에 내가 관심있는 시나리오가있다 :Entity Framework 투영

난 많은 열을 가지고있는 큰 테이블 (VeryWideRecord라고 부르 자)이 있고, (VeryWideRecord라고도 불리는) 상응하는 비즈니스 객체를 가지고있다. VeryWideRecord 비즈니스 개체에 대한 데이터베이스를 쿼리 할 수 ​​싶습니다 있지만 기본 SQL에 의해 반환 된 특정 열에 대한 값만 있습니다. Entity Framework로이 작업을 수행 할 수 있습니까?

응용 프로그램이 (런타임에) 요청 된 열을 변경할 수 있어야하기 때문에 Entity Framework의 테이블 분할 기능으로이 작업을 수행 할 수 있는지 여부는 확실하지 않습니다. 그 이유는 우리가 전선을 가로 질러가는 정보의 양을 최소화하려고 노력하고 있기 때문입니다.

NHibernate (example)를 사용하여이 작업을 수행하는 방법을 알았지 만, 어떻게 Entity Framework에서이 작업을 수행 할 수 있습니까?

답변

0

뭔가 (: 다음은 링크입니다. 당신이 어떤 컴파일 타임 확인이이와

Dim pl As New List(Of VeryWideRecord)(
    (From p In db.VeryWideRecords 
     Select New With {.RecID = p.RecID} 
    ).ToList().Select(
     Function(r) 
     Return New VeryWideRecord With {.RecID = r.RecID} 
     End Function)) 

하지만 당신이 정말로 동적으로이 작업을 수행하려는 경우, ESQL입니다 또한 실제 엔티티 프레임 워크가 아니지만 트릭을 수행하는 람다 식 표현이 아닙니다.

+0

나는 pr 그렇지만, 요청한 열은 런타임에 컴파일 타임이 아니라 결정됩니다. 또한, FYI, 당신은 EF가 proejction의 작업을 할 수 있습니다, 당신은 단지'ToList()'를 호출하고 싶지 않을 것이고 프로젝션은 익명의 타입을 반환해야합니다. EF가 처리하는 프로젝션에서 수행 할 수있는 작업에는 제한이 있다는 점에 유의해야합니다 (일반적으로 프로젝션 내에서 함수를 호출 할 수는 없습니다). 투영을 사용하는 투영법을 사용하는 경우에는 'ToList()'보다 'AsEnumerable()'을 사용하는 것이 유리합니다. –

+0

동의 함, AsEnumerable()이 더 좋겠지 만 작성을 위해 람다 파트를 표시하는 예가 더 많습니다 그 기록. Anynomous 타입을 반환하는 것은 그가 원하지 않는 것입니다. – MarcelDevG