2016-08-09 3 views
3

OData 서비스와 통신해야하는 앱 (Microsoft Dynamics CRM이 정확함)에서 작업하고 있습니다. 엔티티가 가지고있는 모든 속성이 무엇인지 알 필요가있는 요구 사항이 있습니다.OData에서 엔티티의 속성 정의 만 가져 오기

[Organization URI]/api/data/v8.1/contacts 

은 모든 연락처를 반환하지만 연락처의 속성 정의 만 원합니다.

바로 지금 [Organization URI]/api/data/v8.1/contacts은 값이있는 JSON을 반환하지만 내가보고있는 것은 연락처 실체의 스키마입니다. 모든 속성 (예 : firstname, lastname)과 가능한 속성 유형을 반환해야합니다.

아무런 행운없이 $metadata을 사용해 보았습니다. 엔터티에 대한 정보 만 얻을 수 있습니까?

도움을 주시면 감사하겠습니다.

+0

기업이 서비스 메타 데이터에서 인에 대한 정보를 얻을 수있는 유일한 방법을 참조하십시오. 코드 내에 메타 데이터 개체에 대한 액세스 권한이 있습니까? –

답변

2

제공되는 답변은 기술적으로 에 주어진 엔티티에 대한 모든 정의가있는 엔티티에 대한 메타 데이터를 얻는 방법을 설명합니다. 그러나 웹 API를 사용하는 경우 웹 API 용 CSDL 메타 데이터 문서 ($ 메타 데이터)를 다운로드하고 연락처 entityType의 정의를 찾으십시오. 이 문서는 contact EntityType 문서를 생성하는 데 사용되는 데이터이며 웹 API에서 사용되는 특정 정의를 제공합니다.

구조에 차이가 있음을 알 수 있습니다. 즉메타 데이터는 LookupAttributeMetadata 특성을 정의하지만 웹 API는 단일 값 탐색 속성과 읽기 전용 '조회 속성'을 사용합니다.

웹 API의 $ 메타 데이터를 이해하는 내용 Web API types and operations > Entity types

1

Web Api를 사용하는 경우 (사용자의 것처럼 보임) AttributeMetadata의 탐색 속성이있는 EntityMetadata을 검색 할 수 있습니다.이 탐색 속성은 특성 (일명 필드, 속성)을 설명합니다.

[Organization URI]/api/data/v8.1/EntityDefinitions

Use the Web API with CRM metadata

: Query Metadata using the Web API

+0

"연락처"에 대한 EntityDefinitions를 호출 할 때 탐색 속성을 찾을 수 없습니다. 나 좀 도와 줄 수있어? –

+0

시간 내 주셔서 대단히 감사드립니다. 나는 이미 그 일을 시도했다. 내가 얻으려고하는 것은 해당 개체의 속성입니다. 예 : 연락처에는'firstname','lastname' 속성이 있습니다. 나는 그 개체의 스키마를 얻고 싶다. –

3

에서 GET [Organization URI]/api/data/v8.1/EntityDefinitions?$select=DisplayName,IsKnowledgeManagementEnabled,EntitySetName&$filter=SchemaName eq 'Contact' HTTP/1.1

또한로서는 Query Metadata using the Web API 참조. 이전 답변은 비슷하지만 속성 목록을 얻으려면 $expand=Attributes이 필요합니다. 또한 연락처에서 필터링하려는 모든 항목을 가져옵니다. 반환 된 JSON에서

GET [Organization URI]/api/data/v8.1/EntityDefinitions?$select=LogicalName&**$expand=Attributes($select=LogicalName)**&$filter=SchemaName eq 'Contact' 

당신은 배열 어느

value[0].Attributes 

에서 속성을 찾을 수 있습니다. 이 경우 I $select=LogicalName이므로 LogicalName 속성 (해당 속성의 GUID 인 MetadataId도 있음)이 있습니다.

따라서 첫 번째 $select은 엔티티의 속성 용입니다. $expand은 CRM에 특성을 포함하도록 지시합니다. 내측 $select은 속성에서 리턴 할 필드를 알려줍니다. $filter은 연락처에 대해이 모든 메타 데이터 만 반환하도록합니다.

+0

자세한 답변을 부탁드립니다. 내가 허락하자마자 당신에게 현상금을 수여 할 것입니다 :-) –

+0

이것이 정말로 도움이되는 동안, 저는 한 가지 더 묻고 싶습니다. 현재 270 개의 속성을 모두 얻었습니다. 중요한 속성이나 UI에서 편집 할 수있는 속성을 얻을 수있는 방법이 있습니까? –

+0

AttributeOf (API/data/v8.1/EntityDefinitions? $ select = LogicalName & $ expand = Attributes ($ select = LogicalName, AttributeOf) & $ filter = SchemaName eq 'Contact')를 검색하고 AttributeOf가있는 필드를 제외 할 수 있습니다 null이 아닙니다. 이들은 논리적 열 (예 : GUID 필드의 이름)이며 실제로 테이블에 저장되지 않습니다. 양식의 필드의 경우이 엔터티에 대한 양식 (SystemForm)을 검색해야합니다. /api/data/v8.1/systemforms?$select=formxml&$flector=objecttypecode eq 'contact'를 입력하고 eq를 입력하십시오. 2 및 formactivationstate eq 1 이것은 ... –

관련 문제