Condividi tramite


Utilizzare gli strumenti XRM per aggiornare i dati

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

Sono disponibili due metodi nella classe CrmServiceClient per aggiornare i dati in Microsoft Dynamics 365: UpdateEntity e in UpdateStateAndStatusForEntity.

Un'operazione di aggiornamento mediante l'API degli strumenti XRM richiede un payload di dati. Il payload dei dati prende la forma di un oggetto Dictionary<string, CrmDataTypeWrapper>CrmDataTypeWrapper viene utilizzato per informare l'interfaccia sul tipo di esigenze di gestione da applicare al punto dati a cui si sta facendo riferimento.

UpdateEntity

Questo è il metodo di ancoraggio per aggiornare qualsiasi record in Dynamics 365, ad eccezione dello stato dell'impostazione o dello stato di un record. Per utilizzarlo, è necessario conoscere le informazioni seguenti: il nome dello schema dell'entità, il campo di chiave primaria e la GUID del record che si desidera aggiornare nonché la matrice di payload di dati da aggiornare con essi.

CrmServiceClient crmSvc = new CrmServiceClient(new System.Net.NetworkCredential("<UserName>", "<Password>", “<Domain>”),"<Server>", "<Port>", "<OrgName>");

// Verify that you are connected
if (crmSvc != null && crmSvc.IsReady)
{
    //Display the CRM version number and org name that you are connected to
    Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}", 
    crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

    // 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 = crmSvc.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 = crmSvc.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}", crmSvc.LastCrmError);

    // Display the last exception message if any.
    Console.WriteLine(crmSvc.LastCrmException.Message);
    Console.WriteLine(crmSvc.LastCrmException.Source);
    Console.WriteLine(crmSvc.LastCrmException.StackTrace);

    return;
}

UpdateStateAndStatusForEntity

Questo metodo viene utilizzato per impostare lo stato di un record in Dynamics 365. Ad esempio, tutti i record iniziano in genere in uno stato "aperto". Il nome delle modifiche dello stato in base al tipo di record o alle scelte degli sviluppatori. Un'offerta, ad esempio, ha diversi stati possibili, Bozza, Attiva, Chiudi, Persa e Acquisita.

Suggerimento

È possibile utilizzare il file OptionSets.cs nella cartella SDK\SampleCode\CS\HelperCode del pacchetto di download dell'SDK per visualizzare e utilizzare set di opzioni globali disponibili per le varie entità in Dynamics 365. Per ulteriori informazioni sui set di opzioni globali, vedere Personalizzare set di opzioni globali.

L'aggiornamento dello stato di un'entità richiede la conoscenza dello stato e della condizione di destinazione in base ai nomi o in base agli ID. È possibile ottenere sia i nomi che gli ID eseguendo una query sui metadati dell'entità e ricercando i campi dello stato e della condizione. In questo esempio verrà illustrato come impostare lo stato di un record di account su Inattivo.

CrmServiceClient crmSvc = new CrmServiceClient(new System.Net.NetworkCredential("<UserName>", "<Password>", “<Domain>”),"<Server>", "<Port>", "<OrgName>");

// Verify that you are connected
if (crmSvc != null && crmSvc.IsReady)
{ 
    //Display the CRM version number and org name that you are connected to
    Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}",
    crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

    // Here are the state and status code values
    // statecode = 1 ( Inactive ) 
    // statuscode = 2 ( Inactive ) 

    crmSvc.UpdateStateAndStatusForEntity("account" , accountId , 1 , 2 );

    // the same command using the second form of the method
    crmSvc.UpdateStateAndStatusForEntity("account" , accountId , "Inactive" , "Inactive");
}
else
{
    // Display the last error.
    Console.WriteLine("An error occurred: {0}", crmSvc.LastCrmError);

    // Display the last exception message if any.
    Console.WriteLine(crmSvc.LastCrmException.Message);
    Console.WriteLine(crmSvc.LastCrmException.Source);
    Console.WriteLine(crmSvc.LastCrmException.StackTrace);

    return;
}

Vedere anche

Esempio: guida introduttiva per API degli strumenti XRM
Utilizzare gli strumenti XRM per la connessione a CRM
Utilizzare strumenti XRM per eseguire azioni in CRM
Utilizzare i metadati degli attributi

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright