2013-04-24 4 views
0

아마도 내 질문에는 의미가 없지만 WCF 데이터 서비스를 통해 리플렉션 공급자를 기반으로하는 사용자 지정 데이터를 노출하고 싶습니다.WCF 데이터 서비스 및 동적 데이터 구조

이 데이터는 복잡한 요청의 결과이며 그 구조는 매우 가변적 일 수 있습니다. Dataservice를 통해 노출하는 4 ~ 5 개의 맞춤 클래스를 통해 모델을 만들 수 없습니다.

예를 들어 [날짜, 이름, 나이, 기능] 또는 [날짜, 시간, 페이지, 유형], [국가, 히트, 로이] ... 등의 결과를 가질 수 있습니다. 사용자 지정 클래스에서 모든 결과 조합을 생성하고 WCF 데이터 서비스를 통해 노출 할 수는 없습니다.

그래서 매우 가변적 인 구조를 가진 데이터를 노출 할 수 있습니까? Azure Table이 할 수있는 것을 볼 때, 가능하다고 생각하지만 어떻게 작동하는지 알 수 없습니다.

답변

0

OData에서 일반적으로 열린 유형으로이 작업을 수행 할 수 있습니다. 엔티티 유형은 다음과 같이 trueOpenType 속성을 설정하여 서비스의 $metadata 문서의 오픈으로 선언 : 그 개체 유형의 인스턴스가 선언되지 않은 속성의 수는 그들에 추가 할 수 있습니다 것을 의미

<EntityType Name="Customer" OpenType="true"> 
... 
</EntityType> 

동적으로 (유형에 선언 된 특성 외에).

그러나 WCF Data Services 리플렉션 프로 바이더는 열린 상태의 오픈 타입을 지원하지 않습니다. WCF Data Services에서 열린 유형을 사용하려면 사용자 지정 공급자를 구현해야합니다 (즉, IDataServiceQueryProviderIDataServiceMetadataProvider의 구현을 제공해야 함). 맞춤형 제공 업체를 작성하는 데 도움이 필요하면 Alex의 블로그 시리즈 here을 사용하는 것이 좋습니다.

+0

고맙습니다. 오픈 타입을 살펴 보겠습니다. 그것은 좋은 소리 :) –

0

알렉스의 블로그 시리즈를 읽었지만 공개 유형 속성을 사용하지 않았습니다. 대신, 형식이 지정되지 않은/RO & RW 기술을 노출하지만 내 문제에 부합하지 않는다고 생각합니다.

+0

'IDataServiceQueryProvider' 있음, 방법은 [GetOpenPropertyValue] (http://msdn.microsoft.com/en-us/library/system.data.services.providers.idataservicequeryprovider.getopenpropertyvalue (v = vs. 103) .aspx).이 속성은 공개 속성을 지원하기 위해 구현하려고합니다. 또한,'IServiceMetadataProvider'를 구현할 때, 열고 자하는 타입을 나타내는'ResourceType' (dyanamic)은'IsOpenType' 속성을 true로 설정해야합니다. –