Freigeben über


Verwendung von XRM-Tooling zum Aktualisieren von Daten

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

In der CrmServiceClient-Klasse gibt es zwei Möglichkeiten zum Aktualisieren von Daten in Microsoft Dynamics 365: UpdateEntity und UpdateStateAndStatusForEntity.

Für eine Updateaktion mithilfe der XRM-Tooling-API ist eine Datennutzlast erforderlich. Die Datennutzlast ist ein Dictionary<string, CrmDataTypeWrapper>-Objekt.CrmDataTypeWrapper wird verwendet, um der Schnittstelle mitzuteilen, welche Verarbeitung auf den Datenpunkt angewendet werden soll, auf den verwiesen wird.

UpdateEntity

Dies ist die Ankermethode zum Aktualisieren eines jeden Datensatzes in Dynamics 365, mit Ausnahme des Einstellungsstatus oder des Status eines Datensatzes. Zur Verwendung müssen Sie die folgenden Informationen zu berücksichtigen: der Schemaname der Entität, die Sie aktualisieren möchten, das Primärschlüsselfeld der Entität, die Sie aktualisieren möchten, die GUID des Datensatzes, den Sie aktualisieren möchten, und das Datennutzlastarray, mit dem aktualisiert werden soll.

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

Diese Methode wird verwendet, um den Status eines Datensatzes in Dynamics 365 festzulegen. So starten z. B. alle Datensätze im Allgemeinen in einem „geöffneten“ Status. Der Name des Status wird basierend auf dem Typ des Datensatzes und sogar je nach Auswahl des Entwicklers geändert. Ein Angebot enthält beispielsweise mehrere mögliche Status: Entwurf, Aktiv, Schließen, Verloren, Gewonnen.

Tipp

Sie können die Datei OptionSets.cs im Ordner „SDK\SampleCode\CS\HelperCode“ des SDK-Downloadpakets verwenden, um globalen Optionssätze anzuzeigen und zu verwenden, die für die verschiedenen Entitäten in Dynamics 365 verfügbar sind. Weitere Informationen zu diesen globalen Optionssätzen finden Sie unter Anpassen von globalen Optionssätzen.

Zum Aktualisieren des Status einer Entität müssen Sie wissen, wie der Soll-Zustand und der Status lauten, entweder nach Namen nach IDs. Sowohl die Namen als auch die IDs finden Sie, indem Sie die Metadaten für die Entität abrufen und auf die Felder „Status“ und „Zustand“ achten. In diesem Beispiel wird veranschaulicht, wie Sie den Status eines Firmendatensatzes auf Inaktiv festgelegen.

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;
}

Siehe auch

Beispiel: Schnellstart für XRM Tooling API
CrmServiceClient-Konstruktoren verwenden, um eine Verbindung mit Dynamics 365 herzustellen
XRM-Tooling zur Ausführung von Aktionen in Dynamics 365 verwenden
Verwenden von Attributmetadaten

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright