Web API テーブル スキーマ操作サンプル (C#)
この .NET 6.0 サンプルでは、Dataverse Web API を使用してテーブル、列、およびリレーションシップの定義を作成および変更する演算を実行する方法について説明します。
このサンプルでは、WebAPIService クラス ライブラリ (C#) の共通ヘルパー コードを使用します。
注意
この Dataverse 操作のサンプルの実装とコンソール出力は Web API テーブル スキーマ操作サンプルで詳しく説明されています。またコモン C# の構成の使用は Web API のサンプル (C#) で説明されています。
前提条件
以下は、このサンプルの構築および実行に必要となります :
- Microsoft Visual Studio 2022。
- データ演算を実行する権限を使用して Dataverse にアクセスします。
このサンプルを実行する方法
PowerApps-サンプル リポジトリをクローンまたはダウンロードします。
/dataverse/webapi/C#-NETx/MetadataOperations/ フォルダーを見つけます。
Visual Studio 2022 を使用して
MetadataOperations.sln
ファイルを開きますappsettings.json
ファイルを編集して、以下のプロパティ値を設定します:Property 方法 Url
ご使用の環境の Url。 プレースホルダー https://yourorg.api.crm.dynamics.com
の値を環境の値に置き換えます。 詳細については、開発者向けリソースを表示する を参照してください。UserPrincipalName
プレースホルダー you@yourorg.onmicrosoft.com
の値を環境へのアクセスに使用する UPN の値に置き換えます。Password
プレースホルダー yourPassword
の値を使用するパスワードに置き換えます。appsettings.json
ファイルを保存しますF5 を押してサンプルを実行します。
コード
このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/C#-NETx/MetadataOperations/Program.cs
実際の動作
このサンプルには 11 つのリージョンがあります:
セクション 0: 発行者とソリューションを作成
操作:ソリューション レコードと関連する発行者レコードを作成します。
注意
このサンプルで作成されたすべてのソリューション コンポーネントは、エクスポートできるようにソリューションに関連付けられます。 名前付きメッセージのない操作の場合、この関連付けは、値として設定されたソリューションの一意の名前を設定する MSCRM.SolutionUniqueName
要求ヘッダーを使用して作成されます。
ソリューション コンポーネントのすべての名前には、発行者のカスタマイズの接頭辞を使用して接頭辞が付けられます。
セクション 1: テーブルの作成、取得、更新
操作:
POST
要求を/EntityDefinitions
に送信して、新しいsample_BankAccount
ユーザー所有テーブルを作成します。GET
要求を/EntityDefinitions(LogicalName='sample_bankaccount')
に送信して、作成されたテーブルを取得します。PUT
要求を/EntityDefinitions(LogicalName='sample_bankaccount')
に送信して、テーブルを更新します。
セクション 2: 列の作成、取得、更新
演算:
POST
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes
に送信して、sample_BankAccount
テーブルに新しいsample_boolean
ブール型の列を作成します。GET
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')
に送信して、sample_boolean
ブール型の列を取得します。PUT
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')
に送信して、sample_boolean
ブール型の列を更新します。- UpdateOptionValue Action を使用して
sample_boolean
ブール型の列のオプション ラベルを更新します。 sample_BankAccount
テーブルの新しいsample_datetime
datetime 列を作成して取得します。sample_BankAccount
テーブルの新しいsample_decimal
小数列を作成して取得します。sample_BankAccount
テーブルの新しいsample_integer
整数列を作成して取得します。sample_BankAccount
テーブルの新しいsample_memo
メモ列を作成して取得します。sample_BankAccount
テーブルの新しいsample_money
金額列を作成して取得します。sample_BankAccount
テーブルの新しいsample_choice
選択肢列を作成して取得します。- InsertOptionValue Action を使用して
sample_choice
列に新しいオプションを追加します。 - OrderOption Action を使用して
sample_choice
列のオプションの順序を変更します。 - DeleteOptionValue Action を使用して
sample_choice
列のオプションの 1 つを削除します。 sample_BankAccoun
t テーブルの新しいsample_multiselectchoice
複数選択の選択肢列を作成して取得します。- InsertStatusValue Action を使用して
sample_BankAccount
テーブルの新しい状態オプションを作成します。
セクション 3: グローバル OptionSet の作成および使用
演算:
POST
要求を/GlobalOptionSetDefinitions
に送信して、新しいグローバル選択肢の名前付きsample_colors
を作成します。GET
要求を/GlobalOptionSetDefinitions(<id value>)
に送信して、sample_colors
グローバル選択肢を取得します。POST
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes
に送信し、グローバル選択肢に関連付けることによって、sample_colors
グローバル選択肢を使用してsample_BankAccount
テーブルの新しいsample_colors
選択肢列を作成します。
セクション 4: 顧客リレーションシップの作成
演算:
- CreateCustomerRelationships Action クラスを使用して、
sample_BankAccount
テーブルに新しいsample_customerid
顧客列を作成します。 GET
要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid')
に送信して、sample_customerid
顧客列を取得します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata
.` に送信して、顧客列に作成されたリレーションシップを取得します。
セクション 5: 一対多の関連付けの作成と取得
操作:
- CanBeReferenced Function を使用して、
sample_BankAccount
テーブルが 1:N の関連付けで参照できることを確認します。 - CanBeReferencing Function を使用して、
contact
テーブルが 1:N の関連付けで他のテーブルを参照できることを確認します。 - GetValidReferencingEntities Function を使用して、1:N の関連付けで
sample_BankAccount
テーブルを参照できる他のテーブルを特定します。 POST
要求を/RelationshipDefinitions
に送信して、sample_BankAccount
とcontact
のテーブル間に 1:N の関連付けを作成します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata
に送信して、1:N の関連付けを取得します。
セクション 6: 多対一の関連付けの作成と取得
操作:
POST
要求を/RelationshipDefinitions
に送信して、sample_BankAccount
とaccount
のテーブル間に N:1 の関連付けを作成します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata
に送信して、N:1 の関連付けを取得します。
セクション 7: 多対多の関連付けの作成と取得
操作:
- CanManyToMany Function を使用して、
sample_BankAccount
とcontact
のテーブルが N:N の関連付けに関与できることを確認します。 - GetValidManyToMany Function を使用して、
sample_BankAccount
とcontact
のテーブルが N:N の関連付けに関与できることを確認します。 POST
要求を/RelationshipDefinitions
に送信して、sample_BankAccount
とcontact
のテーブル間に N:N の関連付けを作成します。GET
要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata
に送信して、N:N の関連付けを取得します。
セクション 8: 管理ソリューションのエクスポート
演算: ExportSolution Action を使用して、このサンプルで作成されたアイテムを含む セクション 0: 発行者とソリューションを作成 で作成したソリューションをエクスポートします。
セクション 9: サンプル レコードを削除
操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このサンプルでは、レコードが $batch
演算を使用して削除されます。
セクション10: 管理ソリューションのインポートと削除
演算:
- ImportSolution Action を使用して セクション 8 でエクスポートしたソリューションをインポートします。
- ソリューション テーブルをクエリして、インポートされたソリューションの
solutionid
を取得します。 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 分かかります。 個人データは収集されません (プライバシー ステートメント)。