Exercice : créer une application à l’aide du kit de développement logiciel (SDK) Dataverse

Effectué 100 XP

Service Dataverse Organization

Au cours des étapes suivantes, vous allez pouvoir créer une application utilisant le kit de développement logiciel (SDK) Dataverse pour .NET.

Authentifier et créer un enregistrement

  1. Lancez Visual Studio 2022.

  2. Cliquez sur Créer un projet.

  3. Recherchez le terme console, sélectionnez Application console, puis cliquez sur Suivant.

    Capture d’écran de la page Créer un projet et de la sélection du modèle Application console.

  4. Donnez un nom au projet, sélectionnez un Emplacement, puis cliquez sur Suivant.

  5. Sélectionnez .NET 7.0 (LTS) pour Infrastructure, cochez la case Ne pas utiliser d’instructions de niveau supérieur, puis cliquez sur Créer.

    Capture d’écran de la valeur .NET 6.0 LTS.

  6. Cliquez avec le bouton droit sur le projet et sélectionnez Gérer les packages NuGet.

  7. Cliquez sur l’onglet Parcourir, recherchez dataverse.client, sélectionnez Microsoft.PowerPlatform.Dataverse.Client, puis cliquez sur Installer.

    Capture d’écran du package NuGet.

  8. Fermez le gestionnaire NuGet.

  9. Ajoutez ces instructions using à Program.cs.

    C#
    using Microsoft.PowerPlatform.Dataverse.Client;
    using Microsoft.Xrm.Sdk;
    
  10. Remplacez le code dans la méthode Main par ce code. Ce code crée un client de service.

    C#
      var serviceClient = new ServiceClient("Url=[instance url];AuthType=OAuth;RedirectUri=http://localhost;LoginPrompt=Always");
    
  11. Rendez la méthode Main asynchrone et renvoyez Task au lieu de void.

    Capture d’écran de la méthode Main.

  12. Accédez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.

  13. Cliquez sur le bouton Paramètres, puis sélectionnez Détails de la session.

    Capture d’écran de l’option Détails de la session.

  14. Copiez l’URL de l’instance.

    Capture d’écran de l’URL de l’instance.

  15. Revenez à Visual Studio et remplacez [instance url] par l’URL que vous avez copiée.

    Capture d’écran de l’URL.

  16. Ajoutez cette méthode à la classe Program.

    C#
      private async static Task CreateNewAccount(ServiceClient serviceClient)
      {
    
      }
    
  17. La méthode CreateNewAccount.

    Capture d’écran de la méthode CreateNewAccount.

  18. Ajoutez ce code à la méthode CreateNewAccount. Ce code crée un compte et affiche l’ID du compte créé.

    C#
     Entity newAccount = new Entity("account");
     newAccount["name"] = "Fourth Coffee (Learn Labs)";
     newAccount["creditlimit"] = new Money(12000);
     var accountId = await serviceClient.CreateAsync(newAccount);
     Console.WriteLine("Created Account Id: " + accountId);
    
  19. La méthode CreateNewAccount devrait maintenant ressembler à cette méthode.

    Capture d’écran du code créant un compte.

  20. Ajoutez ce code à la méthode Main. Ce code appelle la méthode CreateNewAccount.

    Capture d’écran de l’appel de la méthode CreateNewAccount.

  21. Enregistrez vos modifications et exécutez l’application console.

  22. Vous devriez être invité à vous connecter. Fournissez vos informations d’identification, puis connectez-vous.

  23. Vous pouvez fermer la fenêtre de navigateur.

  24. L’application console devrait afficher la ligne ID du compte créé.

    Capture d’écran de la ligne ID du compte créé.

  25. Appuyez sur toute touche pour fermer l’application console.

  26. Revenez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.

  27. Cliquez sur Tables et ouvrez la table Compte.

    Capture d’écran de la table Compte.

  28. Accédez à la section Colonnes et données Compte, cliquez sur le bouton Plus, ajoutez la colonne Crédit autorisé, puis cliquez sur Enregistrer.

    Capture d’écran de l’ajout de la colonne Crédit autorisé.

  29. La ligne du compte créé devrait s’afficher.

    Capture d’écran de la ligne du compte créé.

  1. Revenez à Visual Studio 2022.

  2. Ajoutez cette méthode à la classe Program.

    C#
     private async static Task CreateRelatedRecords(ServiceClient serviceClient)
     {
    
     }
    
  3. Ajoutez ce code à la méthode CreateRelatedRecords. Ce code crée un compte.

    C#
     Entity newAccount = new Entity("account");
     newAccount["name"] = "Fourth Coffee (With Contact)";
     newAccount["creditlimit"] = new Money(12000);
     newAccount.Id = await serviceClient.CreateAsync(newAccount);
    
  4. Ajoutez ce code à la méthode CreateRelatedRecords. Ce code crée un contact et définit son client parent sur le nouveau compte.

    C#
     Entity newContact = new Entity("contact");
     newContact["firstname"] = "Nancy";
     newContact["lastname"] = "Anderson (Learn Lab)";
     newContact["parentcustomerid"] = newAccount.ToEntityReference();
     var contactId = await serviceClient.CreateAsync(newContact);
    
  5. Ajoutez ce code à la méthode CreateRelatedRecords. Ce code affiche les ID des enregistrements de contact et de compte créés.

    C#
     Console.WriteLine($"Created Acount Id: {newAccount.Id} -  Created  Contact Id: {contactId}.");
    
  6. La méthode CreateRelatedRecords devrait maintenant ressembler à cette image.

    Capture d’écran de la méthode CreateRelatedRecords.

  7. Accédez à la méthode Main, commentez l’appel à la méthode CreateNewAccount et appelez la méthode CreateRelatedRecords.

  8. La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.

    Capture d’écran de la méthode Main et de l’appel des méthodes CreateNewAccount et CreateRelatedRecords.

  9. Fournissez vos informations d’identification, puis connectez-vous.

  10. L’application console devrait afficher les ID des enregistrements créés.

    Capture d’écran des ID des enregistrements créés.

  11. Fermez l’application console.

    C#
     QueryExpression contactQuery = new QueryExpression("contact");
     contactQuery.ColumnSet = new ColumnSet("fullname");
    

Interroger les contacts

  1. Revenez à Visual Studio 2022.

  2. Ajoutez cette méthode à la classe Program.

    C#
     private async static Task QueryContacts(ServiceClient serviceClient)
     {
    
     }
    
  3. Ajoutez ce code à la méthode QueryContacts. Ce code crée une expression de requête pour la table contact et sélectionne la colonne fullname.

    C#
     QueryExpression contactQuery = new QueryExpression("contact");
     contactQuery.ColumnSet = new ColumnSet("fullname");
    
  4. Ajoutez ce code à la méthode QueryContacts. Cet extrait de code crée l’élément LinkEntity pour les tables account et contact, sélectionne les colonnes name et creditlimit et donne un nom d’alias à l’élément LinkEntity. Un élément LinkEntity vous permet d’interroger la relation entre les deux tables à leur intersection.

    C#
     LinkEntity accountLink = new LinkEntity("contact", "account", "parentcustomerid", "accountid", JoinOperator.Inner);
         accountLink.Columns = new ColumnSet("name", "creditlimit");
     accountLink.EntityAlias = "parentAccount";
    
  5. Ajoutez ce code à la méthode QueryContacts. Ce code ajoute une condition pour les comptes dont le crédit autorisé est supérieur à 12 001. Cela ajoute des critères à l’élément LinkEntity afin que vous obteniez uniquement les lignes de contact associées à un compte doté d’un crédit autorisé > 12 000.

    C#
     accountLink.LinkCriteria.AddCondition("creditlimit", ConditionOperator.GreaterThan, 12000);
     contactQuery.LinkEntities.Add(accountLink);
    
  6. Appelez la méthode RetrieveMultiple. Ajoutez ce code à la méthode QueryContacts. Cela renvoie toutes les lignes de la table Contact correspondant aux critères de requête.

    C#
     EntityCollection results = serviceClient.RetrieveMultiple(contactQuery);
    
  7. Ajoutez ce code à la méthode QueryContacts. Ce code parcourt les entités résultat et affiche le nom du contact et le crédit autorisé du compte. Notez que cela convertit la colonne d’entité en AliasedValue : cela est nécessaire lors de l’accès aux données d’un élément LinkedEntity pour récupérer plusieurs résultats.

    C#
     foreach (Entity entity in results.Entities)
     {
         var creditLimit = ((Money)((AliasedValue)entity["parentAccount.creditlimit"]).Value).Value;
    
         Console.WriteLine($"Contact name: {entity["fullname"]} Credit limit: {creditLimit}.");
     }
    
  8. La méthode QueryContacts devrait maintenant ressembler à cette image.

    Capture d’écran de la méthode QueryContacts.

  9. Accédez à la méthode Main, commentez l’appel à la méthode CreateRelatedRecordsMethod et appelez la méthode QueryContacts.

  10. La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.

    Capture d’écran de la méthode Main et de l’appel de la méthode QueryContacts.

  11. Fournissez vos informations d’identification, puis connectez-vous.

  12. L’application devrait afficher le nom du contact et le crédit autorisé du compte.

    Capture d’écran du nom du contact et du crédit autorisé du compte.

  13. Fermez l’application.

Créer une clé secondaire

  1. Revenez à Visual Studio 2022.

  2. Ajoutez cette méthode à la classe Program.

    C#
     private async static Task CreateAlternateKey(ServiceClient serviceClient)
     {
    
     }
    
  3. Ajoutez ce code à la méthode CreateAlternateKey. Ce code crée une clé secondaire pour la table Compte en fonction du numéro de compte. Ceci est un exemple de la modification des métadonnées Dataverse à l’aide de l’API. Vous pouvez également créer des tables, des colonnes et d’autres métadonnées dans un environnement Dataverse.

    C#
    CreateEntityKeyRequest createKeyRequest = new CreateEntityKeyRequest
    {
      EntityName = "account",
      EntityKey = new EntityKeyMetadata
      {
         KeyAttributes = new[] { "accountnumber" },
         SchemaName = "contoso_AccountNumberKey",
         DisplayName = new Label("Account Number Key", 1033)
      }
    };
    
  4. Ajoutez ce code à la méthode CreateAlternateKey. Ce code appelle la méthode ExecuteAsync et affiche l’ID de clé.

    C#
     var excuteResults = await serviceClient.ExecuteAsync(createKeyRequest);
     Console.WriteLine($"Key Id: {excuteResults.Results.First().Value}");
    
  5. Accédez à la méthode Main, commentez l’appel à la méthode QueryContacts et appelez la méthode CreateAlternateKey.

  6. La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.

    Capture d’écran de la méthode Main et de l’appel de la méthode CreateAlternateKey.

  7. Fournissez vos informations d’identification, puis connectez-vous.

  8. L’application console devrait afficher l’ID de clé secondaire créé.

  9. Fermez l’application.

  10. Accédez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.

  11. Cliquez sur Tables et ouvrez la table Compte.

  12. Cliquez sur le bouton Clés sous la section Schéma.

    Capture d’écran du bouton Clés sous Schéma.

  13. La clé secondaire que vous avez créée devrait s’afficher.

    Capture d’écran de la clé secondaire.

Mettre à jour un enregistrement à l’aide d’une clé secondaire

  1. Accédez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.

  2. Cliquez sur Tables et ouvrez la table Compte.

  3. Accédez à la section Colonnes et données Compte, cliquez sur le bouton Plus de colonnes, ajoutez les colonnes Numéro de compte et Crédit autorisé, puis cliquez sur Enregistrer.

    Capture d’écran de l’ajout de colonnes.

  4. Copiez la valeur Numéro de compte de l’un des comptes et notez la valeur Crédit autorisé actuelle.

    Capture d’écran de la copie de la valeur Numéro de compte.

  5. Revenez à Visual Studio 2022.

  6. Ajoutez cette méthode à la classe Program.

    C#
     private async static Task UpdateWithAlternateKey(ServiceClient serviceClient)
     {
    
     }
    
  7. Ajoutez ce code à la méthode UpdateWithAlternateKey. Cela met à jour le crédit autorisé du compte à l’aide de la clé secondaire.

    C#
     Entity account = new Entity("account", "accountnumber", "ABC28UU7");
     account["creditlimit"] = new Money(500);
    
     await serviceClient.UpdateAsync(account);
    
  8. La méthode UpdateWithAlternateKey devrait maintenant ressembler à cette image.

    Capture d’écran de la méthode UpdateWithAlternateKey.

  9. Accédez à la méthode Main, commentez l’appel à la méthode CreateAlternateKey et appelez la méthode UpdateWithAlternateKey.

  10. La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.

    Capture d’écran de l’appel de la méthode UpdateWithAlternateKey.

  11. Fournissez vos informations d’identification, puis connectez-vous.

  12. L’application devrait s’exécuter avec succès. Fermez l’application.

  13. Accédez à Maker Portal et vérifiez que le crédit autorisé du compte a été mis à jour.

    Capture d’écran du crédit autorisé mis à jour.

Suivi des modifications de requête

  1. Revenez à Visual Studio 2022.

  2. Accédez à la méthode UpdateWithAlternateKey et redéfinissez la valeur Crédit autorisé sur 25000.

    Capture d’écran de la modification du crédit autorisé.

  3. Ajoutez cette méthode à la classe Program.

    C#
     private async static Task QueryChangeTracking(ServiceClient serviceClient)
     {
    
     }
    
  4. Ajoutez ce code à la méthode QueryChangeTracking. Cette opération entraîne la création d’une requête de récupération de modification d’entité pour la table Compte et définit le nombre d’enregistrements sur 5 000.

    C#
     string token = null;
     RetrieveEntityChangesRequest request = new RetrieveEntityChangesRequest
     {
         EntityName = "account",
         Columns = new ColumnSet(true),
         PageInfo = new PagingInfo
         {
             Count = 5000, // Set the number of records per page here.
             PageNumber = 1
         },
         DataVersion = token
     };
    
  5. Ajoutez ce code à la méthode QueryChangeTracking. Ceci exécute la requête.

    C#
     var response = await serviceClient.ExecuteAsync(request) as RetrieveEntityChangesResponse;
    
  6. Ajoutez ce code après l’appel à la méthode QueryChangeTracking. Cela affiche les ID de l’entité nouvelle ou mise à jour.

    C#
     foreach (var entity in response.EntityChanges.Changes)
     {
         if (entity.Type == ChangeType.NewOrUpdated)
         {
             var updatedEntity = ((NewOrUpdatedItem)entity).NewOrUpdatedEntity;
    
             Console.WriteLine($"Entity ID: {updatedEntity.Id}");
         }
     }
     request.DataVersion = response.EntityChanges.DataToken;
    
  7. La méthode QueryChangeTracking devrait maintenant ressembler à cette image.

    Capture d’écran de la méthode Main après l’affichage des ID de modification.

  8. Appelez la méthode UpdateWithAlternateKey. Ajoutez ce code à la méthode QueryChangeTracking.

  9. Vous allez désormais récupérer à nouveau les modifications d’entité après avoir mis à jour le crédit autorisé du compte. Ajoutez ce code après l’appel à la méthode UpdateWithAlternateKey.

    C#
     response = await serviceClient.ExecuteAsync(request) as RetrieveEntityChangesResponse;
    
     foreach (var entity in response.EntityChanges.Changes)
     {
         if (entity.Type == ChangeType.NewOrUpdated)
         {
             var updatedEntity = ((NewOrUpdatedItem)entity).NewOrUpdatedEntity;
    
             Console.WriteLine($"Updated ID: {updatedEntity.Id}");
         }
     }
    
  10. La partie inférieure de la méthode QueryChangeTracking devrait ressembler à cette image.

    Capture d’écran de la partie inférieure de la méthode QueryChangeTracking.

  11. Accédez à la méthode Main, commentez l’appel à la méthode UpdateWithAlternateKey et appelez la méthode QueryChangeTracking.

  12. La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.

    Capture d’écran de la méthode Main et de l’appel de la méthode QueryChangeTracking.

  13. Fournissez vos informations d’identification, puis connectez-vous.

  14. L’application devrait s’exécuter correctement et afficher une liste d’ID comprenant l’ID du compte que vous avez mis à jour.

    Capture d’écran des ID de requête et de réponse de modification.

  15. Fermez l’application.


Unité suivante: Contrôle de vos connaissances

Précédent Suivant