Web API テーブル スキーマ操作サンプル (C#)

この .NET 6.0 サンプルでは、Dataverse Web API を使用してテーブル、列、およびリレーションシップの定義を作成および変更する演算を実行する方法について説明します。

このサンプルでは、WebAPIService クラス ライブラリ (C#) の共通ヘルパー コードを使用します。

注意

この Dataverse 操作のサンプルの実装とコンソール出力は Web API テーブル スキーマ操作サンプルで詳しく説明されています。またコモン C# の構成の使用は Web API のサンプル (C#) で説明されています。

前提条件

以下は、このサンプルの構築および実行に必要となります :

  • Microsoft Visual Studio 2022。
  • データ演算を実行する権限を使用して Dataverse にアクセスします。

このサンプルを実行する方法

  1. PowerApps-サンプル リポジトリをクローンまたはダウンロードします。

  2. /dataverse/webapi/C#-NETx/MetadataOperations/ フォルダーを見つけます。

  3. Visual Studio 2022 を使用して MetadataOperations.sln ファイルを開きます

  4. appsettings.json ファイルを編集して、以下のプロパティ値を設定します:

    Property 方法
    Url ご使用の環境の Url。 プレースホルダー https://yourorg.api.crm.dynamics.com の値を環境の値に置き換えます。 詳細については、開発者向けリソースを表示する を参照してください。
    UserPrincipalName プレースホルダー you@yourorg.onmicrosoft.com の値を環境へのアクセスに使用する UPN の値に置き換えます。
    Password プレースホルダー yourPassword の値を使用するパスワードに置き換えます。
  5. appsettings.json ファイルを保存します

  6. F5 を押してサンプルを実行します。

コード

このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/C#-NETx/MetadataOperations/Program.cs

実際の動作

このサンプルには 11 つのリージョンがあります:

セクション 0: 発行者とソリューションを作成

演算: ソリューション レコードと関連する発行者レコードを作成します。

注意

このサンプルで作成されたすべてのソリューション コンポーネントは、エクスポートできるようにソリューションに関連付けられます。 名前付きメッセージのない演算の場合、この関連付けは、値として設定されたソリューションの一意の名前を設定する MSCRM.SolutionUniqueName 要求ヘッダーを使用して作成されます。 ソリューション コンポーネントのすべての名前には、発行者のカスタマイズの接頭辞を使用して接頭辞が付けられます。

セクション 1: テーブルの作成、取得、更新

演算:

  1. POST 要求を /EntityDefinitions に送信して、新しい sample_BankAccount ユーザー所有テーブルを作成します。
  2. GET 要求を /EntityDefinitions(LogicalName='sample_bankaccount') に送信して、作成されたテーブルを取得します。
  3. PUT 要求を /EntityDefinitions(LogicalName='sample_bankaccount') に送信して、テーブルを更新します。

セクション 2: 列の作成、取得、更新

演算:

  1. POST 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes に送信して、sample_BankAccount テーブルに新しい sample_boolean ブール型の列を作成します。
  2. GET 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean') に送信して、sample_boolean ブール型の列を取得します。
  3. PUT 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean') に送信して、sample_boolean ブール型の列を更新します。
  4. UpdateOptionValue Action を使用して sample_boolean ブール型の列のオプション ラベルを更新します。
  5. sample_BankAccount テーブルの新しい sample_datetime datetime 列を作成して取得します。
  6. sample_BankAccount テーブルの新しい sample_decimal 小数列を作成して取得します。
  7. sample_BankAccount テーブルの新しい sample_integer 整数列を作成して取得します。
  8. sample_BankAccount テーブルの新しい sample_memo メモ列を作成して取得します。
  9. sample_BankAccount テーブルの新しい sample_money 金額列を作成して取得します。
  10. sample_BankAccount テーブルの新しい sample_choice 選択肢列を作成して取得します。
  11. InsertOptionValue Action を使用してsample_choice 列に新しいオプションを追加します。
  12. OrderOption Action を使用して sample_choice 列のオプションの順序を変更します。
  13. DeleteOptionValue Action を使用して sample_choice 列のオプションの 1 つを削除します。
  14. sample_BankAccount テーブルの新しい sample_multiselectchoice 複数選択の選択肢列を作成して取得します。
  15. InsertStatusValue Action を使用して sample_BankAccount テーブルの新しい状態オプションを作成します。

セクション 3: グローバル OptionSet の作成および使用

演算:

  1. POST 要求を /GlobalOptionSetDefinitions に送信して、新しいグローバル選択肢の名前付き sample_colors を作成します。
  2. GET 要求を /GlobalOptionSetDefinitions(<id value>) に送信して、sample_colors グローバル選択肢を取得します。
  3. POST 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes に送信し、グローバル選択肢に関連付けることによって、sample_colors グローバル選択肢を使用して sample_BankAccount テーブルの新しい sample_colors 選択肢列を作成します。

セクション 4: 顧客リレーションシップの作成

演算:

  1. CreateCustomerRelationships Action クラスを使用して、sample_BankAccount テーブルに新しい sample_customerid 顧客列を作成します。
  2. GET 要求を /EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid') に送信して、sample_customerid 顧客列を取得します。
  3. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata.` に送信して、顧客列に作成されたリレーションシップを取得します。

セクション 5: 一対多の関連付けの作成と取得

演算:

  1. CanBeReferenced Function を使用して、sample_BankAccount テーブルが 1:N の関連付けで参照できることを確認します。
  2. CanBeReferencing Function を使用して、contact テーブルが 1:N の関連付けで他のテーブルを参照できることを確認します。
  3. GetValidReferencingEntities Function を使用して、1:N の関連付けで sample_BankAccount テーブルを参照できる他のテーブルを特定します。
  4. POST 要求を /RelationshipDefinitions に送信して、sample_BankAccountcontact のテーブル間に 1:N の関連付けを作成します。
  5. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata に送信して、1:N の関連付けを取得します。

セクション 6: 多対一の関連付けの作成と取得

演算:

  1. POST 要求を /RelationshipDefinitions に送信して、sample_BankAccountaccount のテーブル間に N:1 の関連付けを作成します。
  2. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata に送信して、N:1 の関連付けを取得します。

セクション 7: 多対多の関連付けの作成と取得

演算:

  1. CanManyToMany Function を使用して、sample_BankAccountcontact のテーブルが N:N の関連付けに関与できることを確認します。
  2. GetValidManyToMany Function を使用して、sample_BankAccountcontact のテーブルが N:N の関連付けに関与できることを確認します。
  3. POST 要求を /RelationshipDefinitions に送信して、sample_BankAccountcontact のテーブル間に N:N の関連付けを作成します。
  4. GET 要求を /RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata に送信して、N:N の関連付けを取得します。

セクション 8: 管理ソリューションのエクスポート

演算: ExportSolution Action を使用して、このサンプルで作成されたアイテムを含む セクション 0: 発行者とソリューションを作成 で作成したソリューションをエクスポートします。

セクション 9: サンプル レコードを削除

操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このサンプルでは、レコードが $batch 演算を使用して削除されます。

セクション10: 管理ソリューションのインポートと削除

演算:

  1. ImportSolution Action を使用して セクション 8 でエクスポートしたソリューションをインポートします。
  2. ソリューション テーブルをクエリして、インポートされたソリューションの solutionid を取得します。
  3. solutionid を使用して、インポートされたソリューションを削除します。

クリーンアップ

デフォルトでは、このサンプルで作成されたすべてのレコードが削除されます。 サンプルが完了した後に作成されたレコードを表示する場合は、deleteCreatedRecords 変数を false に変更すると、レコードを削除するかどうかを確認するメッセージが表示されます。

参照

Dataverse Web API を使用する
WebAPIService クラス ライブラリ (C#)
テーブル定義による Web API の利用
Web API のサンプル
Web API 基本操作のサンプル (C#)
Web API クエリ データのサンプル (C#)
Web API 条件付き演算サンプル (C#)
Web API 機能およびアクションのサンプル (C#)
Web API WebApiService の並列演算のサンプル (C#)
TPL データフロー コンポーネントを使用した Web API 並列演算のサンプル (C#)

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。