2016-08-09 9 views
3

ODataサービスとの通信が必要なアプリケーションで作業しています(正確にはMicrosoft Dynamics CRMです)。エンティティが持つすべてのプロパティを知る必要があるだけの要件があります。ODataのエンティティのプロパティ定義のみを取得する

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

すべての連絡先が返されますが、連絡先のプロパティ定義のみが必要です。

今すぐ[Organization URI]/api/data/v8.1/contactsはJSONに値を返しますが、私が探しているのは連絡先エンティティのスキーマです。それは、それが持っているすべてのプロパティ(例えば、firstnamelastname)とおそらくプロパティのタイプを返します。

私は$metadataを使用しようとしましたが、運が無かった。エンティティに関する情報のみを取得することは可能ですか?

ご協力いただければ幸いです。

+0

エンティティは、サービスメタデータからであるに関する情報を取得する唯一の方法を参照してください。 コード内にメタデータオブジェクトへのアクセス権がありますか? –

答えて

2

エンティティのメタデータを取得する方法については、には特定のエンティティのすべての定義が含まれています。 しかし、Web APIを使用する場合は、Web APIのCSDLメタデータドキュメント($ metadata)をダウンロードし、連絡先のentityTypeの定義を探します。これは、この文書contact EntityTypeを生成するために使用されるデータであり、Web APIが使用する特定の定義を提供します。

構造に違いが見られます。すなわち、メタデータはLookupAttributeMetadata属性を定義しますが、Web APIでは単一値のナビゲーションプロパティと読み取り専用の「参照プロパティ」が使用されます。

のWeb 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

これは本当に助けになりましたが、私はもう1つ質問したいと思います。現在、270のプロパティをすべて取得しています。重要なプロパティやUIから編集できるプロパティを取得する方法はありますか? –

+0

AttributeOf(api/data/v8.1/EntityDefinitions?$ select = LogicalName&$ expand =属性($ select = LogicalName、AttributeOf)&$ filter = SchemaName eq 'Contact')を取得し、AttributeOfが存在するフィールドを除外することができます。 nullではありません。これらは論理カラム(GUIDフィールドの名前など)であり、実際にはテーブルに格納されません。 フォームのフィールドの場合、このエンティティのフォーム(SystemForm)を取得する必要があります。 /api/data/v8.1/systemforms?$select=formxml&$filter=objecttypecode eq 'contact' 2とformactivationstate eq 1 これは全体的に単純化されています。なぜなら、... –

関連する問題