この.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ファイルを編集して、以下のプロパティ値を設定します:プロパティ 手順 Urlご使用の環境のURL。 プレースホルダー https://yourorg.api.crm.dynamics.comの値を環境の値に置き換えます。 詳細については、開発者向けリソースを表示する を参照してください。UserPrincipalNameプレースホルダー you@yourorg.onmicrosoft.comの値を環境へのアクセスに使用する UPN の値に置き換えます。Passwordプレースホルダー yourPasswordの値をあなたが使用するパスワードに置き換えてください。appsettings.jsonファイルを保存しますF5 を押してサンプルを実行します。
Code
このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/C#-NETx/MetadataOperations/Program.cs
表示する
このサンプルには 11 つのリージョンがあります:
セクション 0: 発行者とソリューションを作成
操作:ソリューション レコードと関連する発行者レコードを作成します。
ヒント
このサンプルで作成されたすべてのソリューション コンポーネントは、エクスポートできるようにソリューションに関連付けられます。 名前付きメッセージのない操作の場合、この関連付けは、 MSCRM.SolutionUniqueName 要求ヘッダーを使用して作成され、ソリューションの一意の名前が値として設定されます。
ソリューション コンポーネントのすべての名前には、発行者のカスタマイズの接頭辞を使用して接頭辞が付けられます。
セクション 1: テーブルの作成、取得、更新
操作:
-
sample_BankAccountにPOST要求を送信して、ユーザー所有の新しい/EntityDefinitionsテーブルを作成します。 -
GETに/EntityDefinitions(LogicalName='sample_bankaccount')要求を送信して、作成されたテーブルを取得します。 -
PUT要求を/EntityDefinitions(LogicalName='sample_bankaccount')に送信して、テーブルを更新します。
セクション 2: 列の作成、取得、更新
操作:
-
sample_boolean要求をsample_BankAccountに送信して、POSTテーブルに新しい/EntityDefinitions(LogicalName='sample_bankaccount')/Attributesブール型の列を作成します。 -
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_BankAccountテーブルに新しいsample_datetimedatetime 列を作成し、取得します。 -
sample_decimalテーブルの新しいsample_BankAccount小数列を作成して取得します。 -
sample_BankAccountテーブルの新しいsample_integer整数列を作成して取得します。 -
sample_memoテーブルに新しいsample_BankAccountメモ列を作成して取得します。 -
sample_moneyテーブルの新しいsample_BankAccount金額列を作成して取得します。 -
sample_choiceテーブルの新しいsample_BankAccount選択肢列を作成して取得します。 -
sample_choice列に新しいオプションを追加するには、InsertOptionValue Action を使用します。 -
OrderOption Actionを使用して、
sample_choiceのオプションの順序を変更します。 -
sample_choice列の特定のオプションを削除するには、「DeleteOptionValueアクション」を使用してください。 -
sample_multiselectchoicet テーブルの新しいsample_BankAccoun複数選択の選択肢列を作成して取得します。 -
sample_BankAccountを使用して、 テーブルの新しい Status オプションを作成します。
セクション 3: グローバル OptionSet の作成および使用
操作:
-
sample_colorsにPOST要求を送信して、/GlobalOptionSetDefinitionsという名前の新しいグローバル選択を作成します。 -
sample_colorsにGET要求を送信して、/GlobalOptionSetDefinitions(<id value>)グローバル選択を取得します。 -
sample_colors要求をsample_BankAccountに送信し、グローバル選択に関連付けることで、sample_colorsグローバル選択を使用して、POSTテーブルの新しい/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes選択列を作成します。
セクション 4: 顧客リレーションシップの作成
操作:
-
sample_customeridを使用して、sample_BankAccountテーブルの新しい顧客列を作成します。 -
sample_customeridにGET要求を送信して、顧客/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid')列を取得します。 -
GET要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata' に送信して、顧客列に対して作成されたリレーションシップを取得します。
セクション 5: 一対多の関連付けの作成と取得
操作:
-
sample_BankAccountを参照して、CanBeReferenced 関数を使い、テーブルが 1:N の関連付けで参照可能かどうかを確認します。 -
CanBeReferencing Functionを使用して、
contactテーブルが 1:N のリレーションシップで他のテーブルを参照可能かどうかを確認します。 - GetValidReferencingEntities Functionを使用して、どの他のテーブルが1:Nリレーションシップで
sample_BankAccountテーブルを参照できるかを特定します。 -
sample_BankAccount要求をcontactに送信して、POSTテーブルと/RelationshipDefinitionsテーブルの間に 1:N リレーションシップを作成します。 -
GET要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadataに送信して、1:N リレーションシップを取得します。
セクション 6: 多対一の関連付けの作成と取得
操作:
-
sample_BankAccountに要求を送信して、accountとPOSTテーブルの間に N:1 リレーションシップを/RelationshipDefinitionsで作成します。 -
GET要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadataに送信して、N:1 リレーションシップを取得します。
セクション 7: 多対多の関連付けの作成と取得
操作:
-
sample_BankAccountおよびcontactテーブルが N:N 関係に参加できるかどうかを CanManyToMany 関数 で確認します。 -
sample_BankAccountを使用して、contactテーブルと テーブルが N:N リレーションシップに参加する資格があることを確認します。 -
sample_BankAccount要求をcontactに送信して、POSTテーブルと/RelationshipDefinitionsテーブルの間に N:N リレーションシップを作成します。 -
GET要求を/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadataに送信して、N:N リレーションシップを取得します。
セクション 8: 管理ソリューションのエクスポート
操作: 「セクション 0:ExportSolution アクションを使用して、このサンプルで作成した項目を含むパブリッシャーとソリューションを作成する」で作成したソリューションをエクスポートします。
セクション 9: サンプル レコードを削除
操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このサンプルでは、レコードが $batch 演算を使用して削除されます。
セクション10: 管理ソリューションのインポートと削除
操作:
- ImportSolution アクションを使用して、セクション 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#)