2011-04-07 4 views
3

문자열 목록을 반환하는 내 DomainService에 메서드를 만들려고합니다. 내가이 일을하는 이유는 정보의 모든 엔티티를 반환하고 싶지 않기 때문입니다. 다음과 같이 나는 하나의 문자열을 반환하는 방법을 만들 수 있습니다 :이 InvokeOperation<string> 호출을 통해 클라이언트에서 작품을 좋아RIA 서비스에서 문자열을 반환 할 수 있지만 IEnumerable <string>을 반환 할 수없는 이유는 무엇입니까?

public string GetDestinations() 
    { 
     return "Hello world"; 
    } 

. 그러나 DomainService 메서드를 Ienumerable로 변환하면 다음과 같이됩니다. '문자열'유효한 개체 유형이 아닙니다

유형 :

public IEnumerable<string> GetDestinations() 
    { 
     List<String> h = new List<string>(); 
     h.Add("HELLO"); 
     h.Add("WORLD"); 

     return h; 
    } 

그리고 분명 내가 컴파일러 오류를 내려면 InvokeOperation<IEnumerable<string>> 전화를 사용합니다. 엔티티 유형은 원시 유형 또는 string 또는 Guid와 같은 단순 유형 일 수 없습니다.

허? 단일 문자열을 반환 할 수 있다고 가정 할 때 이는 의미가 없습니다. 내 DomainService에서 문자열 목록을 반환하려면 어떻게합니까?

+0

흥미 롭다 처음에는 InvokeOperation >에 문제가 없었습니다. opresult.Value를 사용했지만이 오류가 발생하기 시작했습니다. createriaclientfilestask가 실패했습니다! . 나는 Alessandro의 제안도 시도해 보았지만 똑같은 것으로 보인다. –

+0

오우 나는 Out of Memory (8GB이지만 3GB는 무료)에 따라 "createriaclientfilestask fail"이라는 오류를 발견했습니다. 그럼 난 내 기억을 무료로 만든 후 그것을 만들 수 있습니다. 당신은 웹 측면 IEnumerable 반환하고 않았다면 나는 invokop.Value.toList ()로 사용 버스 측면에서 않았다. 우리는 SL4와 Ria Services V1 SP 2를 사용합니다. –

답변

6

문자열 배열을 반환하고 메서드를 InvokeOperation으로 표시해보십시오.

[Invoke] 
public string[] GetDestinations() 
{ 
... 
} 
+0

당신 말이 맞습니다! 배열을 반환하고 호출 할 수만 있습니다 ... – Calanus

2

관습 적으로 Query 메서드로 계산 된 IEnumerable을 반환하는 메서드입니다. 쿼리 메서드는 엔터티 컬렉션 만 반환 할 수 있습니다. 메소드에 Invoke 속성을 추가하십시오.

+0

Invoke ...와 함께 IEnumerable을 반환 할 수 없습니다 ... – Calanus

+0

하지만 RiaServices V1 SP2에서 IEnumerable 을 반환하는 데 성공했습니다. 메소드가 IEnumerable 을 Query 메소드로 반환하면 그렇지 않으면 IEnumerable 에 문제가 없어야합니다. (DataContract를 사용해도 알 수 있듯이 DataMemberAttribute는 다른 웹 객체의 직렬화를 지원합니다.) –

관련 문제