Partager via


Utiliser les outils XRM pour mettre à jour les données

Il existe deux méthodes disponibles dans la classe CrmServiceClient pour mettre à jour les données dans Microsoft Dataverse: UpdateEntity(String, String, Guid, Dictionary<String,CrmDataTypeWrapper>, String, Boolean, Guid) et UpdateStateAndStatusForEntity(String, Guid, String, String, Guid).

De même, pour la classe ServiceClient, il existe les méthodes UpdateEntity et UpdateStateAndStatusForEntity.

Une action de mise à jour à l’aide de l’API des outils XRM exige une charge utile de données. La charge utile des données prend la forme d’un objet Dictionnaire<string, CrmDataTypeWrapper>. CrmDataTypeWrapper est utilisé pour informer l’interface du type de gestion qu’il convient d’appliquer au point de données auquel vous faites référence.

UpdateEntity

Il s’agit de la méthode d’ancrage pour la mise à jour de tout enregistrement dans Dataverse, à l’exception de la définition du statut ou de l’état d’un enregistrement. Pour l’utiliser, vous devez connaître les informations suivantes : le nom du schéma de la table que vous souhaitez mettre à jour, le champ de clé primaire de la table que vous souhaitez mettre à jour, le GUID de l’enregistrement que vous souhaitez mettre à jour et enfin le tableau des données utiles pour le mettre à jour.

CrmServiceClient svc = new CrmServiceClient(connectionstring);  
  
// Verify that you are connected  
if (svc != null && svc.IsReady)  
{ 
   // Update the account record  
    Dictionary<string, CrmDataTypeWrapper> updateData = new Dictionary<string, CrmDataTypeWrapper>();  
    updateData.Add("name", new CrmDataTypeWrapper("Updated Sample Account Name", CrmFieldType.String));  
    updateData.Add("address1_city", new CrmDataTypeWrapper("Boston", CrmFieldType.String));  
    updateData.Add("telephone1", new CrmDataTypeWrapper("555-0161", CrmFieldType.String));   
    bool updateAccountStatus = svc.UpdateEntity("account","accountid",_accountId,updateData);  
  
    // Validate if the account record was updated successfully, and then display the updated information  
    if (updateAccountStatus == true)  
    {  
        Console.WriteLine("Updated the account details as follows:");  
        Dictionary<string, object> data = svc.GetEntityDataById("account", accountId, null);  
        foreach (var pair in data)  
        {  
            if ((pair.Key == "name") || (pair.Key == "address1_city") || (pair.Key == "telephone1"))  
            {  
                Console.WriteLine(pair.Key.ToUpper() + ": " + pair.Value);  
            }  
        }  
    }  
}  
else  
{  
    // Display the last error.  
    Console.WriteLine("An error occurred: {0}", svc.LastCrmError);  
  
    // Display the last exception message if any.  
    Console.WriteLine(svc.LastCrmException.Message);  
    Console.WriteLine(svc.LastCrmException.Source);  
    Console.WriteLine(svc.LastCrmException.StackTrace);  
  
    return;  
}  

UpdateStateAndStatusForEntity

Cette méthode est utilisée pour définir l’état d’un enregistrement dans Dataverse. Par exemple, tous les enregistrements démarrent généralement avec un état « ouvert ». Le nom de l’état change en fonction du type d’enregistrement, voire des options de développeurs. Un devis, par exemple, possède plusieurs états et statuts possibles, Brouillon, Actif, Fermé, Perdu, Conclu.

La mise à jour de l’état d’une table nécessite que vous connaissiez l’état et le statut de la cible, soit par les noms, soit par les ID. Les noms et les ID peuvent être récupérés en interrogeant la définition de la table et en examinant les champs d’état et de statut. Dans cet exemple, nous vous montrerons comment définir le statut d’un enregistrement de compte sur Inactif.

CrmServiceClient svc = new CrmServiceClient(connectionstring);  
  
// Verify that you are connected  
if (svc != null && svc.IsReady)  
{   
    // Here are the state and status code values  
    // statecode = 1 ( Inactive )   
    // statuscode = 2 ( Inactive )   
  
    svc.UpdateStateAndStatusForEntity("account" , accountId , 1 , 2 );  
  
    // the same command using the second form of the method  
    svc.UpdateStateAndStatusForEntity("account" , accountId , "Inactive" , "Inactive");  
}  
else  
{  
    // Display the last error.  
    Console.WriteLine("An error occurred: {0}", svc.LastCrmError);  
  
    // Display the last exception message if any.  
    Console.WriteLine(svc.LastCrmException.Message);  
    Console.WriteLine(svc.LastCrmException.Source);  
    Console.WriteLine(svc.LastCrmException.StackTrace);  
  
    return;  
}  
  

Voir aussi

Utiliser les outils XRM pour se connecter à Dataverse
Utiliser l’API des outils XRM pour exécuter des actions dans Dataverse

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).