Web API のスキーマ定義のクエリと変更の検出のサンプル (C#)
このサンプルでは、RetrieveMetadataChanges アクションを使用してテーブル定義の変更を取得および検出する方法を説明します。
PowerApps-Samples/dataverse/webapi/C#-NETCore/Schema/RetrieveMetadataChanges/ でサンプルをご覧ください
機能の説明については、次の記事を参照してください。
このサンプルでは、WebAPIService クラス ライブラリ (C#) の共通ヘルパー コードを使用します。
前提条件
以下の前提条件はこのサンプルの構築および実行に必要となります :
- Microsoft Visual Studio 2022。
- データ演算を実行する権限を使用して Dataverse にアクセスします。
このサンプルを実行する方法
PowerApps-サンプル リポジトリをクローンまたはダウンロードします。
/dataverse/webapi/C#-NETx/RetrieveMetadataChanges/ フォルダーを見つけます。
Visual Studio 2022 を使用して
RetrieveMetadataChanges.sln
ファイルを開きますappsettings.json
ファイルを編集して、以下のプロパティ値を設定します:Property 方法 Url
ご使用の環境の Url。 プレースホルダー https://yourorg.api.crm.dynamics.com
の値を環境の値に置き換えます。 開発者リソースを表示 を見て自分の環境の URL を見つけます。UserPrincipalName
プレースホルダー you@yourorg.onmicrosoft.com
の値を環境へのアクセスに使用する UPN の値に置き換えます。Password
プレースホルダー yourPassword
の値を使用するパスワードに置き換えます。appsettings.json
ファイルを保存しますF5 を押してサンプルを実行します。
コード
このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/C#-NETx/RetrieveMetadataChanges/Program.cs
実際の動作
特定の列定義のスキーマ定義を取得し、それらを (メモリに) 保存してキャッシュとして利用する方法を、このサンプルで示します。
次に、新しい列を作成して、その新しい列だけからデータを取得し、キャッシュに追加します。
そして列を削除し、削除した項目に関するデータを取得して、削除した列の定義をそれを使用してキャッシュから削除します。
このサンプルには 6 つのセクションがあります。
クエリの定義
EntityQueryExpression を使用して、連絡先テーブルからすべての選択リスト選択列を返すクエリを定義します。
キャッシュの初期化
Query
パラメーターをクエリに設定して、RetrieveMetadataChanges のインスタンスを作成します。- 要求を送信して RetrieveMetadataChangesResponse を取得します。
RetrieveMetadataChangesResponse.EntityMetadata
値をキャッシュします。- 次の要求で使用するために、
RetrieveMetadataChangesResponse.ServerVersionStamp
を保存します。 - 現在のすべての列のリストを、キャッシュに書き込みます。
選択肢列の追加
取引先担当者テーブルに新しい PicklistAttributeMetadata インスタンスを作成し、新しい選択肢列を作成します。
追加した列を検出する
Query
パラメーターを元のクエリに設定して、RetrieveMetadataChanges の新しいインスタンスを作成します。- 最初の要求で以前に返された値を使用して
RetrieveMetadataChangesRequest.ClientVersionStamp
を設定します。 - 要求を送信して RetrieveMetadataChangesResponse を取得します。
- 作成した選択肢列を表す新しい列定義が、1 つだけ返されたことを確認します。
- 次の要求で使用するために、
RetrieveMetadataChangesResponse.ServerVersionStamp
を保存します。 - その選択肢列のデータをキャッシュに追加します。
選択肢列を削除する
先ほど作成した選択肢列を削除します。
削除した列を検出する
Query
パラメーターを元のクエリに設定して、RetrieveMetadataChanges の新しいインスタンスを作成します。- 2 番目の要求で以前に返された値を使用して
RetrieveMetadataChangesRequest.ClientVersionStamp
を設定します。 - 削除された列定義を探しているため、
RetrieveMetadataChangesRequest.DeletedMetadataFilters
をDeletedMetadataFilters.Attribute
に設定します。 - 要求を送信して RetrieveMetadataChangesResponse を取得します。
- コレクションのインデックス値として
DeletedMetadataFilters.Attribute
を使用して、RetrieveMetadataChangesResponse.DeletedMetadata
で削除された選択肢列の ID を見つけます。 - 列定義をキャッシュから削除します。
- 現在のすべての列のリストを、キャッシュに書き込みます。
クリーンアップ
このサンプルで作成したデータはすべて削除されたため、クリーンアップは必要ありません。
参照
スキーマ定義のクエリ
キャッシュ スキーマ データ
Dataverse Web API を使用する
WebAPIService クラス ライブラリ (C#)
Web API テーブル スキーマ操作サンプル (C#)
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。