Exercice : créer une application à l’aide du kit de développement logiciel (SDK) Dataverse
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
Lancez Visual Studio 2022.
Cliquez sur Créer un projet.
Recherchez le terme console, sélectionnez Application console, puis cliquez sur Suivant.
Donnez un nom au projet, sélectionnez un Emplacement, puis cliquez sur Suivant.
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.
Cliquez avec le bouton droit sur le projet et sélectionnez Gérer les packages NuGet.
Cliquez sur l’onglet Parcourir, recherchez dataverse.client, sélectionnez Microsoft.PowerPlatform.Dataverse.Client, puis cliquez sur Installer.
Fermez le gestionnaire NuGet.
Ajoutez ces instructions using à Program.cs.
C#using Microsoft.PowerPlatform.Dataverse.Client; using Microsoft.Xrm.Sdk;
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");
Rendez la méthode Main asynchrone et renvoyez Task au lieu de void.
Accédez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.
Cliquez sur le bouton Paramètres, puis sélectionnez Détails de la session.
Copiez l’URL de l’instance.
Revenez à Visual Studio et remplacez [instance url] par l’URL que vous avez copiée.
Ajoutez cette méthode à la classe Program.
C#private async static Task CreateNewAccount(ServiceClient serviceClient) { }
La méthode CreateNewAccount.
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);
La méthode CreateNewAccount devrait maintenant ressembler à cette méthode.
Ajoutez ce code à la méthode Main. Ce code appelle la méthode CreateNewAccount.
Enregistrez vos modifications et exécutez l’application console.
Vous devriez être invité à vous connecter. Fournissez vos informations d’identification, puis connectez-vous.
Vous pouvez fermer la fenêtre de navigateur.
L’application console devrait afficher la ligne ID du compte créé.
Appuyez sur toute touche pour fermer l’application console.
Revenez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.
Cliquez sur Tables et ouvrez la table Compte.
Accédez à la section Colonnes et données Compte, cliquez sur le bouton Plus, ajoutez la colonne Crédit autorisé, puis cliquez sur Enregistrer.
La ligne du compte créé devrait s’afficher.
Créer des enregistrements associés
Revenez à Visual Studio 2022.
Ajoutez cette méthode à la classe Program.
C#private async static Task CreateRelatedRecords(ServiceClient serviceClient) { }
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);
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);
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}.");
La méthode CreateRelatedRecords devrait maintenant ressembler à cette image.
Accédez à la méthode Main, commentez l’appel à la méthode CreateNewAccount et appelez la méthode CreateRelatedRecords.
La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.
Fournissez vos informations d’identification, puis connectez-vous.
L’application console devrait afficher les ID des enregistrements créés.
Fermez l’application console.
C#QueryExpression contactQuery = new QueryExpression("contact"); contactQuery.ColumnSet = new ColumnSet("fullname");
Interroger les contacts
Revenez à Visual Studio 2022.
Ajoutez cette méthode à la classe Program.
C#private async static Task QueryContacts(ServiceClient serviceClient) { }
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");
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";
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);
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);
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}."); }
La méthode QueryContacts devrait maintenant ressembler à cette image.
Accédez à la méthode Main, commentez l’appel à la méthode CreateRelatedRecordsMethod et appelez la méthode QueryContacts.
La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.
Fournissez vos informations d’identification, puis connectez-vous.
L’application devrait afficher le nom du contact et le crédit autorisé du compte.
Fermez l’application.
Créer une clé secondaire
Revenez à Visual Studio 2022.
Ajoutez cette méthode à la classe Program.
C#private async static Task CreateAlternateKey(ServiceClient serviceClient) { }
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) } };
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}");
Accédez à la méthode Main, commentez l’appel à la méthode QueryContacts et appelez la méthode CreateAlternateKey.
La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.
Fournissez vos informations d’identification, puis connectez-vous.
L’application console devrait afficher l’ID de clé secondaire créé.
Fermez l’application.
Accédez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.
Cliquez sur Tables et ouvrez la table Compte.
Cliquez sur le bouton Clés sous la section Schéma.
La clé secondaire que vous avez créée devrait s’afficher.
Mettre à jour un enregistrement à l’aide d’une clé secondaire
Accédez à Maker Portal et vérifiez que l’environnement approprié est sélectionné.
Cliquez sur Tables et ouvrez la table Compte.
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.
Copiez la valeur Numéro de compte de l’un des comptes et notez la valeur Crédit autorisé actuelle.
Revenez à Visual Studio 2022.
Ajoutez cette méthode à la classe Program.
C#private async static Task UpdateWithAlternateKey(ServiceClient serviceClient) { }
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);
La méthode UpdateWithAlternateKey devrait maintenant ressembler à cette image.
Accédez à la méthode Main, commentez l’appel à la méthode CreateAlternateKey et appelez la méthode UpdateWithAlternateKey.
La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.
Fournissez vos informations d’identification, puis connectez-vous.
L’application devrait s’exécuter avec succès. Fermez l’application.
Accédez à Maker Portal et vérifiez que le crédit autorisé du compte a été mis à jour.
Suivi des modifications de requête
Revenez à Visual Studio 2022.
Accédez à la méthode UpdateWithAlternateKey et redéfinissez la valeur Crédit autorisé sur 25000.
Ajoutez cette méthode à la classe Program.
C#private async static Task QueryChangeTracking(ServiceClient serviceClient) { }
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 };
Ajoutez ce code à la méthode QueryChangeTracking. Ceci exécute la requête.
C#var response = await serviceClient.ExecuteAsync(request) as RetrieveEntityChangesResponse;
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;
La méthode QueryChangeTracking devrait maintenant ressembler à cette image.
Appelez la méthode UpdateWithAlternateKey. Ajoutez ce code à la méthode QueryChangeTracking.
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}"); } }
La partie inférieure de la méthode QueryChangeTracking devrait ressembler à cette image.
Accédez à la méthode Main, commentez l’appel à la méthode UpdateWithAlternateKey et appelez la méthode QueryChangeTracking.
La méthode Main devrait maintenant ressembler à cette image. Exécutez le programme.
Fournissez vos informations d’identification, puis connectez-vous.
L’application devrait s’exécuter correctement et afficher une liste d’ID comprenant l’ID du compte que vous avez mis à jour.
Fermez l’application.