CSDL $metadata ドキュメント内には、Function要素があります。 関数の操作は、データを変更してはならないため、アクションとは異なります。 通常、これらはデータの取得にのみ使用されます。
すべての関数には Name 属性があります。 この名前は、 HTTPGETを使用するときに URL の一部になり、要求の URL で関数の定義済みパラメーターを送信します。
バインドされた関数
アクションと同様に、関数には IsBound="true" 属性が含まれる場合があります。 これは、 バインドされた 関数であることを意味します。
IsBound属性を持たない関数はバインド解除されます。 バインドされた関数は、最初のパラメーターがテーブル レコードまたはエンティティ セットへの参照であることを意味します。
関数がバインドされると、サービス名前空間内の特定の項目への参照が含まれます。 関数を使用するには、 Microsoft.Dynamics.CRM 名前空間を含む完全修飾名を使用する必要があります。 詳細情報: サービス名前空間
構成可能な関数
関数には、 IsComposable="true" 属性が含まれる場合があります。 つまり、 $filter や $select などのシステム クエリ オプションを URL に追加して、返される結果を指定できます。 このオプションは、特定のシステム機能でのみ使用できます。 作成可能な カスタム API を使用して関数を作成することはできません。
パラメーター
通常、関数には 1 つ以上の Parameter 要素があります。 各パラメーターには、次の属性があります。
| 特性 | Description |
|---|---|
Name |
パラメーターの名前です。Functionがオーバーロードされていない限り、名前は一意です。 詳細: オーバーロードされた関数。 |
Type |
パラメーターの型。 |
Nullable="false" |
パラメーターが null 値を受け取ることができるかどうか |
ReturnType
関数は値を返す必要があります。 関数には常に ReturnType 要素があります。
| 特性 | Description |
|---|---|
Type |
パラメーターの型。 |
Nullable="false" |
値が null であるかどうかを示します。 |
関数定義の例
次に、さまざまなバインド パターンを示す Function 定義の架空の例をいくつか示します。 これらの各例では、整数値が返されます。
バインドされていない関数
単一の整数 Number パラメーターを持つ非連結関数。
<Function Name="UnBoundFunctionExample">
<Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
<ReturnType Type="Edm.Int32" Nullable="false" />
</Function>
エンティティにバインドされた関数
単一の整数account パラメーターを使用して、Number エンティティにバインドされた関数。
<Function Name="EntityBoundFunctionExample" IsBound="true">
<Parameter Name="entity" Type="mscrm.account" Nullable="false" />
<Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
<ReturnType Type="Edm.Int32" Nullable="false" />
</Function>
エンティティ セットにバインドされた関数
1 つの整数account パラメーターを使用して、Number EntitySet にバインドされた関数。
<Function Name="EntityCollectionBoundFunctionExample" IsBound="true">
<Parameter Name="entityset" Type="Collection(mscrm.account)" Nullable="false" />
<Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
<ReturnType Type="Edm.Int32" Nullable="false" />
</Function>
オーバーロードされた関数
通常、$metadataで見つかる各関数は、その名前を持つ唯一の関数になります。 ただし、バインドされた関数は、異なる型にバインドされるときに複数の定義を持つことができます。 システム RetrieveUnpublished 関数と RetrieveUnpublishedMultiple 関数は、いくつかの例です。 カスタム API を使用してオーバーロードされた関数を作成することはできません。
次のステップ
複合型と列挙型について説明します。
こちらも参照ください
Dataverse Web API を使用する
Web API の種類と操作
Web API サービス ドキュメント
Web API EntityTypes
Web API のプロパティ
Web API のナビゲーション プロパティ
Web API アクション
Web API の複合型と列挙型
OData バージョン 4.0。 パート 3: 共通スキーマ定義言語 (CSDL) と Errata 03 要素 edm:Function