Freigeben über


Web-API-Nachschlagebeispiel für mehrere Tabellen (PowerShell)

In diesem PowerShell-Beispiel wird veranschaulicht, wie Sie mithilfe der Dataverse-Web-API Mehrtabellen-Nachschlagespalten erstellen und verwenden, die manchmal als polymorphe Nachschlagespalten bezeichnet werden.

In diesem Beispiel werden die Vorgänge veranschaulicht, die unter Verwendung von Nachschlagespalten mit mehreren Tabellen beschrieben werden, und die PowerShell-Hilfsfunktionen der Dataverse-Web-API werden verwendet, um die Authentifizierung zu verwalten und bereitgestellte Funktionen wiederverwendbar zur Durchführung allgemeiner Vorgänge zu verwenden. Im Beispiel werden diese Skripts mithilfe von Dot Sourcing referenziert.

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

Hinweis

Dieses Beispiel sollte mit Windows, Linux und macOS funktionieren, aber der Autor hat es nur auf Windows getestet.

Voraussetzungen

Bevor Sie dieses Beispiel ausführen, sollten Sie die folgenden Artikel lesen, in denen die von diesen Beispielen verwendeten Konzepte und Muster erläutert werden:

Für diese Artikel gelten die gleichen Voraussetzungen.

Installieren Sie Folgendes oder überprüfen Sie, ob es vorhanden ist

Überprüfen der Installation

  1. Öffnen Sie Visual Studio Code.

  2. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus.

  3. Wählen Sie im navigationsbereich Visual Studio Code das Symbol für die PowerShell-Erweiterung aus.

  4. Kopieren Sie das folgende Skript, und fügen Sie es in das terminalfenster Visual Studio Code ein:

    Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString()
    Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
    
  5. Drücken Sie die EINGABETASTE. Die Ausgabe sollte wie folgt aussehen:

    PowerShell Version: 7.4.0
    PowerShell Az version: 11.1.0
    

Wenn Sie keine derartigen Ergebnisse sehen, installieren oder aktualisieren Sie die Voraussetzungen.

Darüber hinaus brauchen Sie

  • Ein gültiges Benutzerkonto für eine Dataverse-Umgebung
  • Die URL zur Dataverse-Umgebung, mit der Sie eine Verbindung herstellen möchten Unter Entwicklerressourcen anzeigen erfahren Sie, wie Sie ihn finden. Sie sieht ungefähr so aus: https://yourorg.crm.dynamics.com/, wobei yourorg.crm anders ist.
  • Grundlegende Kenntnisse über die PowerShell-Skriptsprache

Wie man dieses Beispiel ausführt

  1. Klonen Sie das Repository Power Apps-Samples, oder laden Sie es herunter.

  2. Öffnen Sie die Datei /dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1 mithilfe von Visual Studio Code.

  3. Bearbeiten Sie die folgende Zeile, um die URL der Umgebung zu verwenden, mit der Sie eine Verbindung herstellen möchten:

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

  4. (Optional) Legen Sie die $deleteCreatedRecords-Variable auf $false fest, wenn Sie die in diesem Beispiel erstellten Datensätze nicht löschen möchten.

  5. Drücken Sie F5, um das Beispiel auszuführen.

  6. Beim ersten Ausführen des Beispiels wird ein Browserfenster geöffnet. Geben Sie im Browserfenster die Anmeldeinformationen ein bzw. wählen Sie diejenigen aus, die Sie zur Authentifizierung verwenden möchten.

Um eine Verbindung als anderer Benutzer herzustellen, führen Sie den Disconnect-AzAccount-Befehl aus, und versuchen Sie es erneut.

Code

Der Code für dieses Beispiel ist unter: PowerApps-Samples/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1

Zeigt

Dieses Beispiel enthält neun Abschnitte:

Abschnitt 0: Herausgeber und Lösung erstellen

Vorgänge:

  1. Suchen Sie nach einem vorhandenen Herausgeber mit dem examplepublisher einzigartigen Namen, indem Sie eine GET Anfrage an /publishers senden.
  2. Erstellen Sie den Herausgeber, wenn er noch nicht vorhanden ist, indem Sie eine POST-Anforderung an /publishers senden.
  3. Abfragen einer vorhandenen Lösung mit dem Namen polymorphiclookupexamplesolution durch Senden einer GET Anforderung an /solutions.
  4. Erstellen Sie die Lösung, wenn sie noch nicht vorhanden ist, indem Sie eine POST Anfrage an /solutions senden.

Hinweis

Sie können alle in diesem Beispiel erstellten Lösungskomponenten exportieren, indem Sie sie der Lösung zuordnen. Legen Sie für Vorgänge ohne benannte Nachricht den Anforderungsheader MSCRM.SolutionUniqueName auf den eindeutigen Namen der Lösung fest, um diese Zuordnung zu erstellen. Präfixieren Sie alle Namen von Lösungskomponenten, indem Sie das Anpassungspräfix des Herausgebers verwenden.

Abschnitt 1: Erstellen referenzierter Tabellen

Vorgänge:

  1. Erstellen Sie eine sample_Book Tabelle, indem Sie eine POST Anfrage an /EntityDefinitions senden, wenn sie noch nicht vorhanden ist. Diese Tabelle enthält ein primäres sample_name Attribut und eine sample_CallNumber Zeichenfolgenspalte.
  2. Erstellen Sie eine sample_Audio Tabelle, indem Sie eine POST Anfrage an /EntityDefinitions senden, wenn sie noch nicht vorhanden ist. Diese Tabelle enthält ein primäres sample_name Attribut und eine sample_AudioFormat Zeichenfolgenspalte.
  3. Erstellen Sie eine sample_Video Tabelle, indem Sie eine POST Anfrage an /EntityDefinitions senden, wenn sie noch nicht vorhanden ist. Diese Tabelle enthält ein primäres sample_name Attribut und eine sample_VideoFormat Zeichenfolgenspalte.

Diese drei Tabellen dienen als referenzierte Tabellen , auf die die polymorphe Nachschlagespalte verweisen kann.

Abschnitt 2: Erstellen einer Referenztabelle

Vorgänge: Erstellen Sie eine sample_Media-Tabelle, indem Sie eine POST-Anforderung an /EntityDefinitions senden, falls diese noch nicht existiert. Diese Tabelle enthält ein primäres sample_name-Attribut und hostet die polymorphe Nachschlagespalte.

Die sample_Media Tabelle dient als referenzierende Tabelle – die Tabelle, die die Nachschlagespalte mit mehreren Tabellen enthält.

Abschnitt 3: Erstellen eines polymorphen Nachschlageattributes

Vorgänge:

  1. Erstellen Sie eine sample_MediaPolymorphicLookup-Nachschlagespalte in der sample_Media-Tabelle zusammen mit eins-zu-viele-Beziehungen zu den drei Tabellen (sample_Book, sample_Audio, und sample_Video) unter Verwendung der CreatePolymorphicLookupAttribute-Aktion. Diese einzelne Aktion erstellt das Attribut und alle drei Beziehungen auf einmal.
  2. Rufen Sie die ReferencingEntityNavigationPropertyName für jede der drei Beziehungen (sample_media_sample_book, sample_media_sample_audio, sample_media_sample_video) ab, indem Sie GET-Anfragen an /RelationshipDefinitions senden. Sie benötigen diese Navigationseigenschaften-Namen, um Datensätze mithilfe der Syntax @odata.bind zuzuordnen.

Abschnitt 4: Erstellen von Beispieldatensätzen

Vorgänge:

  1. Rufen Sie die EntitySetName für jede der vier Tabellen ab, indem Sie GET Anfragen an /EntityDefinitions senden.
  2. Erstellen Sie zwei sample_Book Datensätze, indem Sie POST Anforderungen an sample_books senden.
  3. Erstellen Sie zwei sample_Audio Datensätze, indem Sie POST Anforderungen an sample_audios senden.
  4. Erstellen Sie zwei sample_Video Datensätze, indem Sie POST Anforderungen an sample_videos senden.
  5. Erstellen Sie vier sample_Media Datensätze, indem Sie POST Anfragen an sample_medias senden. Jeder Mediendatensatz verwendet den in Abschnitt 3 abgerufenen Navigationseigenschaftsnamen und @odata.bind die Syntax, um den polymorphen Nachschlagevorgang so festzulegen, dass er auf einen Datensatz aus einer der drei referenzierten Tabellen zeigt.

Abschnitt 5: Abrufen von Beispieldaten

Vorgänge:

  1. Abfragen aller sample_Media Datensätze, Auswählen der sample_name Und _sample_mediapolymorphiclookup_value Spalten durch Senden einer GET Anforderung an /sample_medias. Die Abfrage verwendet die Microsoft.Dynamics.CRM.lookuplogicalname und OData.Community.Display.V1.FormattedValue OData-Anmerkungen, um den Entitätstyp und den formatierten Namen der einzelnen Nachschlagewerte anzuzeigen.
  2. Filtern Sie sample_Media Datensätze, bei denen die polymorphe Suche auf einen bestimmten sample_Book Datensatz verweist, indem Sie eine GET-Anforderung mit einem passenden /sample_medias an $filter senden.
  3. Filtern Sie sample_Media Datensätze, bei denen die polymorphe Suche auf einen bestimmten sample_Audio Datensatz verweist, indem Sie eine GET-Anforderung mit einem passenden /sample_medias an $filter senden.

Abschnitt 6: Exportieren verwalteter Lösungen

Vorgänge: Exportieren Sie die lösung, die Sie in Abschnitt 0 erstellt haben: Erstellen Sie Publisher und Lösung als verwaltetes Lösungspaket mithilfe der ExportSolution-Aktion. Speichern Sie die exportierte .zip Datei lokal für die Verwendung in Abschnitt 8.

Abschnitt 7: Löschen von Beispieltabellen und -lösungen

Vorgänge:

  1. Löschen Sie die sample_Media-Tabelle, indem Sie eine DELETE-Anforderung an /EntityDefinitions senden. Sie müssen die referenzierende Tabelle vor den referenzierten Tabellen löschen.
  2. Löschen Sie die Tabellen sample_Book, sample_Audio und sample_Video, indem Sie DELETE-Anfragen an /EntityDefinitions senden.
  3. Fragen Sie die nicht verwaltete Lösung ab, indem Sie eine GET Anforderung senden, die nach eindeutigem Namen mit /solutions gefiltert wird.
  4. Löschen Sie die nicht verwaltete Lösung, indem Sie eine DELETE Anforderung an /solutions(<solutionid>).

Abschnitt 8: Importieren und Löschen verwalteter Lösung

Vorgänge:

  1. Importieren Sie die verwaltete Lösung, die in Abschnitt 6 exportiert wurde: Exportieren der verwalteten Lösung mithilfe der ImportSolution-Aktion.
  2. Fragen Sie die importierte Lösung ab, indem Sie eine GET-Anforderung an /solutions senden, gefiltert nach einem eindeutigen Namen.
  3. Löschen Sie die importierte verwaltete Lösung, indem Sie eine DELETE Anfrage an /solutions(<solutionid>) senden.

Aufräumen

In diesem Beispiel werden standardmäßig alle von ihr erstellten Datensätze gelöscht. Wenn Sie die erstellten Datensätze nach Abschluss des Beispiels anzeigen möchten, ändern Sie die $deleteCreatedRecords Variable in $false. Anschließend werden Sie aufgefordert, zu entscheiden, ob Sie die Datensätze löschen möchten.

Siehe auch

Verwenden von Nachschlagespalten mit mehreren Tabellen
Verwenden der Dataverse-Web-API
Verwenden der Web-API mit Tabellendefinitionen
Web-API-Beispiele
Beispiel für Web-API-Tabellenschemavorgänge (PowerShell)