2013-09-03 4 views
0

Entity Framework의 모델 정의 함수에서 하위 쿼리를 정의 할 수 있습니까? 우리는 다른 테이블에 이름의 이력을 가진 고객 객체가있는 상황을 가지고 있습니다. 고객 개체의 일부로 가장 최신 이름을 반환하려고합니다.Entity Framework의 모델 정의 함수에서 하위 쿼리 정의

모델 정의 함수는 다음과 같이 보일 수 있습니다

<Function Name="CurrentName" ReturnType="Edm.String"> 
    <Parameter Name="e" Type="Model.Customer"/> 
    <DefiningExpression> 
     (select top(1) n.LegalName from Entities.CustomerNames as n order by n.EffectiveDate Desc) 
    </DefiningExpression> 
    </Function> 

불행하게도, 위에서 작동하지 않습니다. 우리의 오류 얻을 :

결과 유형을 'Edm.String'결과 유형 'Transient.collection [Transient.rowtype (LEGAL_NAME 일치하지 않습니다 기능'SNCCModel.CurrentLegalName '의 선언에 명시된 , Edm.String (Nullable = True, DefaultValue =, MaxLength =, 유니 코드 = False, FixedLength = False)) '함수 정의

어떤 제안이 있습니까? 이게 효과가 있니? 죄송 합니다만 고객 테이블에 가장 최근의 이름을 저장하기 위해 데이터 모델을 리팩토링하는 것은 옵션이 아닙니다.

감사합니다, 릭

답변

0

다음 쿼리 시도 :

ANYELEMENT (선택 VALUE 상단 (1) n.LegalName Entities.CustomerNames에서 n.EffectiveDate 제품 설명에 의해 N 순서로) 기본적으로

을 쿼리에서 행 모음을 반환했으며 예상 결과 유형은 String입니다. select VALUE를 지정하면 행을 없애고 (문자열 집합 만 투영합니다.) ANYELEMENT로 모두 줄 바꿈으로써 구조를 평평하게하고 결과 집합에서 단 하나의 요소 만 반환합니다 (이 경우 유일한 요소) .