Del via


Bruge XRM-værktøjer til at opdatere data

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Der er to metoder tilgængelige i klassen CrmServiceClient til at opdatere data i Microsoft Dynamics 365: UpdateEntity og UpdateStateAndStatusForEntity.

En opdateringshandling ved hjælp af XRM Tooling API kræver et datamateriale. Datamaterialet tager form af et ordbogs <string, CrmDataTypeWrapper>-objekt.CrmDataTypeWrapper anvendes til at informere grænsefladen om ,hvilken type håndtering der skal bruges til det datapunkt, du refererer til.

UpdateEntity

Dette er ankermetoden til opdatering af en post i Dynamics 365, med undtagelse af indstillingen af status af eller tilstand for en post. Hvis du vil bruge den, skal du kende følgende oplysninger: skemanavnet på den enhed, du vil opdatere, det primære nøglefelt i den enhed, du vil opdatere, GUID for den post, du vil opdatere, og endelig datamaterialets matrix til at opdatere den med.

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

Denne metode bruges til at angive tilstanden af en post i Dynamics 365. Alle poster starter generelt f.eks i en "åben" tilstand. Navnet på tilstanden ændres baseret på typen af post, eller endda udviklernes valgmuligheder. Et tilbud har f.eks. flere mulige statusser og tilstande Kladde, Aktiv, Luk, Tabt, Vundet.

Tip

Du kan bruge filen OptionSets.cs i mappen SDK\SampleCode\CS\HelperCode på overførselspakken SDK til at få vist og bruge den globale indstilling, der er tilgængelig for forskellige enheder i Dynamics 365. Du kan finde flere oplysninger om disse globale indstillinger i Tilpas globale grupperede indstillinger.

Opdatering af status for en enhed kræver, at du kender måltilstand og status, enten i form af navne eller id'er. Både navne og id'er finder du ved at forespørge metadataene for objektet og kigge på felterne status og tilstand. I dette eksempel vil vi demonstrere, hvordan du angiver status for en firmapost til Inaktiv.

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

Se også

Eksempel: Hurtig start af XRM-værktøjs-API'er
Bruge CrmServiceClient-konstruktører til at oprette forbindelse til Dynamics 365
Bruge XRM-værktøjer til at udføre handlinger i Dynamics 365
Arbejde med attributmetadata

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret