次の方法で共有


Web API マルチテーブル参照のサンプル (PowerShell)

この PowerShell サンプルでは、Dataverse Web API を使用して、複数テーブル参照列 ( ポリモーフィックなルックアップとも呼ばれます) を作成して使用する方法を示します。

GitHub

このサンプルでは、「 複数テーブル参照列を使用 する」で説明されている操作を示し、 Dataverse Web API PowerShell ヘルパー関数 を使用して認証を管理し、一般的な操作を実行するための再利用可能な関数を提供します。 このサンプルでは 、ドット ソーシングを使用してこれらのスクリプトを参照します。

. $PSScriptRoot\..\Core.ps1
. $PSScriptRoot\..\TableOperations.ps1
. $PSScriptRoot\..\CommonFunctions.ps1
. $PSScriptRoot\..\MetadataOperations.ps1

このサンプルは、Windows、Linux、macOS で動作するはずですが、作成者は Windows でのみテストしました。

[前提条件]

このサンプルを実行する前に、これらのサンプルで使用される概念とパターンについて説明した次の記事を読む必要があります。

これらの記事には同じ前提条件があります。

以下をインストールするか、インストールされていることを確認する

  • Visual Studio Codeをインストールします。 「Download Visual Studio Code

  • Visual Studio Code用の PowerShell 拡張機能をインストールします。 「Visual Studio Code 用 PowerShell」を参照してください。

  • PowerShell 7.4 移行をインストールします。 Windows、Linux、および macOS に PowerShell をインストールする

  • Az PowerShell モジュール バージョン 11.1.0 以降をインストールします。 Azure PowerShell

    既存のインストールを最新のバージョンに更新 するには、Update-Module -Name Az -Force を使います

インストールを検証する

  1. Visual Studio Codeを開きます。

  2. [ ターミナル ] メニューの [ 新しいターミナル] を選択します。

  3. Visual Studio Codeナビゲーション ウィンドウで、PowerShell 拡張機能の アイコンを選択します。

  4. 次のスクリプトをコピーして、Visual Studio Codeターミナル ウィンドウに貼り付けます。

    Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString()
    Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
    
  5. Enter キーを押します。 出力は次のようになります。

    PowerShell Version: 7.4.0
    PowerShell Az version: 11.1.0
    

このような結果が表示されない場合は、前提条件をインストールまたは更新してください。

さらに必要なこと

  • Dataverse 環境に有効なユーザー アカウント
  • 接続する Dataverse 環境への URL。 検索方法については、開発者向けリソースを表示 をご覧ください。 次のようになります: https://yourorg.crm.dynamics.com/、これは yourorg.crm が異なります。
  • PowerShell スクリプト言語の基本的な解釈

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

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

  2. Visual Studio Codeを使用して、/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1 ファイルを開きます。

  3. 次の行を編集して、接続先の環境の URL を使用します。

    Connect 'https://yourorg.crm.dynamics.com/' # change this

  4. (オプション) このサンプルが作成するレコードを削除したくない場合は、$deleteCreatedRecords 変数を $false に設定します。

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

  6. サンプルを初めて実行すると、ブラウザー ウィンドウが開きます。 ブラウザ ウィンドウで、認証に使用する資格情報を入力または選択します。

別のユーザーとして接続するには、Disconnect-AzAccount コマンド を実行して、再試行してください。

Code

このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1

対象

このサンプルには、次の 9 つのセクションがあります。

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

オペレーション

  1. examplepublisherGET要求を送信して、/publishers一意の名前を持つ既存の発行元を照会します。
  2. POST/publishers要求を送信して、パブリッシャーがまだ存在しない場合は作成します。
  3. polymorphiclookupexamplesolutionGET要求を送信して、/solutionsという名前の既存のソリューションを照会します。
  4. POST/solutions要求を送信して、ソリューションがまだ存在しない場合は作成します。

このサンプルで作成したすべてのソリューション コンポーネントは、ソリューションに関連付けることでエクスポートできます。 名前付きメッセージのない操作の場合は、 MSCRM.SolutionUniqueName 要求ヘッダーをソリューション固有の名前に設定して、この関連付けを作成します。 パブリッシャーのカスタマイズ プレフィックスを使用して、ソリューション コンポーネントのすべての名前にプレフィックスを付けます。

セクション 1: 参照テーブルを作成する

オペレーション

  1. まだ存在しない場合は、sample_BookPOST要求を送信して、/EntityDefinitions テーブルを作成します。 このテーブルには、プライマリ sample_name 属性と sample_CallNumber 文字列列が含まれています。
  2. まだ存在しない場合は、sample_AudioPOST要求を送信して、/EntityDefinitions テーブルを作成します。 このテーブルには、プライマリ sample_name 属性と sample_AudioFormat 文字列列が含まれています。
  3. まだ存在しない場合は、sample_VideoPOST要求を送信して、/EntityDefinitions テーブルを作成します。 このテーブルには、プライマリ sample_name 属性と sample_VideoFormat 文字列列が含まれています。

これら 3 つのテーブルは、ポリモーフィックなルックアップ列が参照できる 参照テーブル として機能します。

セクション 2: 参照テーブルの作成

操作: sample_MediaPOST要求を送信して/EntityDefinitions テーブルを作成します (まだ存在しない場合)。 このテーブルにはプライマリ sample_name 属性が含まれており、ポリモーフィックなルックアップ列がホストされています。

sample_Media テーブルは、参照元テーブル (複数テーブル参照列を含むテーブル) として機能します。

セクション 3: ポリモーフィックなルックアップ属性を作成する

オペレーション

  1. sample_MediaPolymorphicLookupを使用して、sample_Media テーブルにsample_Book参照列を作成し、3 つの参照テーブル (sample_Audiosample_Video) に対する一対多リレーションシップを作成します。 この 1 つのアクションにより、属性と 3 つのリレーションシップがすべて一度に作成されます。
  2. 各リレーションシップ (ReferencingEntityNavigationPropertyNamesample_media_sample_booksample_media_sample_audio) のsample_media_sample_videoを取得するために、GET要求を/RelationshipDefinitionsに送信します。 これらのナビゲーション プロパティ名は、 @odata.bind 構文を使用してレコードを関連付けるために必要です。

セクション 4: サンプル データ レコードを作成する

オペレーション

  1. EntitySetNameGET要求を送信して、4 つの各テーブルの/EntityDefinitionsを取得します。
  2. sample_BookPOST要求を送信して、2 つのsample_books レコードを作成します。
  3. sample_AudioPOST要求を送信して、2 つのsample_audios レコードを作成します。
  4. sample_VideoPOST要求を送信して、2 つのsample_videos レコードを作成します。
  5. sample_MediaPOST要求を送信して、4 つのsample_medias レコードを作成します。 各メディア レコードは、セクション 3 で取得したナビゲーション プロパティ名と @odata.bind 構文を使用して、3 つの参照先テーブルのいずれかからレコードを指すようにポリモーフィックな検索を設定します。

セクション 5: サンプル データを取得する

オペレーション

  1. すべてのsample_Mediaレコードにクエリを実行し、sample_name列と_sample_mediapolymorphiclookup_value列を選択して、GET要求を/sample_mediasに送信します。 クエリでは、Microsoft.Dynamics.CRM.lookuplogicalnameOData.Community.Display.V1.FormattedValue OData 注釈を使用して、各参照値のエンティティ型と書式設定された名前が表示されます。
  2. 特定のsample_Mediaレコードを指すポリモーフィックなルックアップのあるsample_Bookレコードをフィルタリングするには、GETに適切な/sample_medias$filter要求を送信します。
  3. 特定のsample_Mediaレコードを指すポリモーフィックなルックアップのあるsample_Audioレコードをフィルタリングするには、GETに適切な/sample_medias$filter要求を送信します。

セクション 6: マネージド ソリューションのエクスポート

操作: 「セクション 0: ExportSolution アクションを使用して、パブリッシャーとソリューションをマネージド ソリューション パッケージとして作成する」で作成したソリューションをエクスポートします。 セクション 8 で使用するために、エクスポートした .zip ファイルをローカルに保存します。

セクション 7: サンプル テーブルとソリューションを削除する

オペレーション

  1. sample_MediaDELETE要求を送信して、/EntityDefinitions テーブルを削除します。 参照先テーブルの前に、参照元テーブルを削除する必要があります。
  2. sample_Booksample_Audio要求を送信して、sample_VideoDELETE、および/EntityDefinitionsテーブルを削除します。
  3. 一意の名前でフィルター処理されたGET/solutions要求を送信して、アンマネージド ソリューションにクエリを実行します。
  4. DELETE/solutions(<solutionid>)要求を送信して、アンマネージド ソリューションを削除します。

セクション 8: マネージド ソリューションのインポートと削除

オペレーション

  1. 「セクション 6:ImportSolution アクションを使用してマネージド ソリューションをエクスポートする」でエクスポートしたマネージド ソリューションをインポートします。
  2. 一意の名前でフィルター処理されたGET/solutions要求を送信して、インポートされたソリューションのクエリを実行します。
  3. DELETE/solutions(<solutionid>)要求を送信して、インポートされたマネージド ソリューションを削除します。

クリーンアップ

既定では、このサンプルは作成するすべてのレコードを削除します。 サンプルの完了後に作成されたレコードを表示する場合は、 $deleteCreatedRecords 変数を $falseに変更します。 その後、レコードを削除するかどうかを決定するように求められます。

こちらも参照ください

複数テーブルの参照列を使用する
Dataverse Web API を使用する
テーブル定義で Web API を使用する
Web API サンプル
Web API テーブル スキーマ操作サンプル (PowerShell)