Partager via


Exemple de recherche multi table d’API web (PowerShell)

Cet exemple PowerShell montre comment créer et utiliser des colonnes de recherche multi-tables, parfois appelées recherches polymorphes, à l’aide de l’API Web Dataverse.

Cet exemple illustre les opérations décrites dans Utiliser des colonnes de recherche à plusieurs tables et utilise les fonctions d’assistance PowerShell de l’API Web Dataverse pour gérer l’authentification et fournir des fonctions réutilisables pour effectuer des opérations courantes. L’exemple référence ces scripts à l’aide du dot sourcing.

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

Note

Cet exemple doit fonctionner avec Windows, Linux et macOS, mais l’auteur l’a testé uniquement sur Windows.

Prerequisites

Avant d’exécuter cet exemple, vous devez lire ces articles qui expliquent les concepts et les modèles utilisés par ces exemples :

Ces articles ont les mêmes conditions préalables.

Installer ou vérifier que les éléments suivants sont installés

Vérifier l’installation

  1. Ouvrez Visual Studio Code.

  2. Dans le menu Terminal, sélectionnez Nouveau terminal.

  3. Dans Visual Studio Code volet de navigation, sélectionnez l’icône pour l’extension PowerShell.

  4. Copiez et collez le script suivant dans la fenêtre de terminal Visual Studio Code :

    Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString()
    Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
    
  5. Appuyez sur Entrée. La sortie doit ressembler à ce qui suit :

    PowerShell Version: 7.4.0
    PowerShell Az version: 11.1.0
    

Si vous ne voyez pas les résultats comme celui-ci, installez ou mettez à jour les prérequis.

Vous aurez également besoin de

  • Un compte d’utilisateur valide pour un environnement Dataverse
  • URL de l’environnement Dataverse auquel vous souhaitez vous connecter. Consultez Afficher les ressources du développeur pour découvrir comment le trouver. Il semble quelque chose comme ceci : https://yourorg.crm.dynamics.com/, où yourorg.crm est différent.
  • Compréhension de base du langage de script PowerShell

Comment exécuter cet exemple

  1. Clonez ou téléchargez le référentiel PowerApps-Samples .

  2. Ouvrez le fichier /dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1 à l’aide de Visual Studio Code.

  3. Modifiez la ligne suivante pour utiliser l’URL de l’environnement auquel vous souhaitez vous connecter :

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

  4. (Facultatif) Définissez la $deleteCreatedRecords variable $false si vous ne souhaitez pas supprimer les enregistrements créés par cet exemple.

  5. Appuyez sur F5 pour exécuter l’exemple.

  6. La première fois que vous exécutez l’exemple, une fenêtre de navigateur s’ouvre. Dans la fenêtre du navigateur, entrez ou sélectionnez les informations d’identification que vous souhaitez utiliser pour vous authentifier.

Pour vous connecter en tant qu’utilisateur différent, exécutez la commandeDisconnect-AzAccount et réessayez.

Code informatique

Le code de cet exemple est à : PowerApps-Samples/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1

Montre ce qui suit

Cet exemple comporte neuf sections :

Section 0 : Créer un éditeur et une solution

Opérations:

  1. Recherchez un éditeur existant avec le examplepublisher nom unique en effectuant une GET requête à /publishers.
  2. Créez l’éditeur s’il n’existe pas déjà en envoyant une POST demande à /publishers.
  3. Requête d’une solution existante nommée polymorphiclookupexamplesolution en envoyant une GET requête à /solutions.
  4. Créez la solution si elle n’existe pas déjà en envoyant une POST demande à /solutions.

Note

Vous pouvez exporter tous les composants de solution créés dans cet exemple en les associant à la solution. Pour les opérations sans message nommé, définissez l’en-tête de requête sur le nom unique de la MSCRM.SolutionUniqueName solution pour créer cette association. Préfixez tous les noms des composants de solution à l’aide du préfixe de personnalisation de l’éditeur.

Section 1 : Créer des tables référencées

Opérations:

  1. Créez une sample_Book table en envoyant une POST demande à /EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principal sample_name et une sample_CallNumber colonne de chaîne.
  2. Créez une sample_Audio table en envoyant une POST demande à /EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principal sample_name et une sample_AudioFormat colonne de chaîne.
  3. Créez une sample_Video table en envoyant une POST demande à /EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principal sample_name et une sample_VideoFormat colonne de chaîne.

Ces trois tables servent de tables référencées vers laquelle la colonne de recherche polymorphe peut pointer.

Section 2 : Créer une table de référencement

Opérations : créez une sample_Media table en envoyant une POST demande à /EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principal sample_name et héberge la colonne de recherche polymorphe.

La sample_Media table sert de table de référencement : la table qui contient la colonne de recherche à plusieurs tables.

Section 3 : Créer un attribut de recherche polymorphe

Opérations:

  1. Créez une sample_MediaPolymorphicLookup colonne de recherche sur la sample_Media table avec des relations un-à-plusieurs avec chacune des trois tables référencées (sample_Book, sample_Audioet sample_Video) à l’aide de l’action CreatePolymorphicLookupAttribute. Cette action unique crée l’attribut et les trois relations à la fois.
  2. Récupérez le ReferencingEntityNavigationPropertyName pour chacune des trois relations (sample_media_sample_book, sample_media_sample_audio, sample_media_sample_video) en envoyant des requêtes GET à /RelationshipDefinitions. Vous avez besoin de ces noms de propriétés de navigation pour associer des enregistrements à l'aide de la syntaxe @odata.bind.

Section 4 : Créer des exemples d’enregistrements de données

Opérations:

  1. Récupérez le EntitySetName de chacune des quatre tables en envoyant GET des requêtes à /EntityDefinitions.
  2. Créez deux sample_Book enregistrements en envoyant des POST requêtes à sample_books.
  3. Créez deux sample_Audio enregistrements en envoyant des POST requêtes à sample_audios.
  4. Créez deux sample_Video enregistrements en envoyant des POST requêtes à sample_videos.
  5. Créez quatre sample_Media enregistrements en envoyant POST des demandes à sample_medias. Chaque enregistrement multimédia utilise le nom de la propriété de navigation récupéré dans la section 3 et la syntaxe @odata.bind pour configurer la recherche polymorphe et pointer vers un enregistrement de l'une des trois tables référencées.

Section 5 : Récupérer des exemples de données

Opérations:

  1. Interrogez tous les enregistrements sample_Media, en sélectionnant les colonnes sample_name et _sample_mediapolymorphiclookup_value en envoyant une requête GET à /sample_medias. La requête utilise les annotations OData Microsoft.Dynamics.CRM.lookuplogicalname et OData.Community.Display.V1.FormattedValue pour afficher le type d’entité et le nom mis en forme de chaque valeur de recherche.
  2. Filtrer les enregistrements sample_Media où la recherche polymorphe pointe vers un enregistrement spécifique sample_Book en envoyant une requête GET à /sample_medias avec un $filter approprié.
  3. Filtrer les enregistrements sample_Media où la recherche polymorphe pointe vers un enregistrement spécifique sample_Audio en envoyant une requête GET à /sample_medias avec un $filter approprié.

Section 6 : Exporter une solution managée

Opérations : exportez la solution que vous avez créée dans la section 0 : Créez un serveur de publication et une solution en tant que package de solution managée à l’aide de l’action ExportSolution. Enregistrez le fichier exporté .zip localement à utiliser dans la section 8.

Section 7 : Supprimer des exemples de tables et de solutions

Opérations:

  1. Supprimez la sample_Media table en envoyant une DELETE demande à /EntityDefinitions. Vous devez supprimer la table de référencement avant les tables référencées.
  2. Supprimez les tables sample_Book, sample_Audio et sample_Video en envoyant des requêtes DELETE à /EntityDefinitions.
  3. Interrogez la solution non managée en envoyant une GET requête à /solutions filtrer par nom unique.
  4. Supprimez la solution non managée en envoyant une DELETE demande à /solutions(<solutionid>).

Section 8 : Importer et supprimer une solution managée

Opérations:

  1. Importez la solution managée exportée dans la section 6 : Exporter une solution managée à l’aide de l’action ImportSolution.
  2. Interrogez la solution importée en envoyant une GET requête à /solutions filtrer par nom unique.
  3. Supprimez la solution managée importée en envoyant une DELETE demande à /solutions(<solutionid>).

Nettoyage

Par défaut, cet exemple supprime tous les enregistrements qu’il crée. Si vous souhaitez afficher les enregistrements créés une fois l’exemple terminé, remplacez la $deleteCreatedRecords variable $falsepar . Vous êtes alors invité à décider si vous souhaitez supprimer les enregistrements.

Voir aussi

Utiliser des colonnes de recherche multi-tables
Utiliser l’API web Dataverse
Utiliser l’API Web avec les définitions de table
Exemples d’API web
Exemple d’opérations sur le schéma de la table de l’API web (PowerShell)