Compartir vía


Usar útiles de XRM para actualizar los datos

Hay dos métodos disponibles en la clase CrmServiceClient para actualizar datos en Microsoft Dataverse: UpdateEntity(String, String, Guid, Dictionary<String,CrmDataTypeWrapper>, String, Boolean, Guid) y UpdateStateAndStatusForEntity(String, Guid, String, String, Guid).

Del mismo modo, para la clase ServiceClient, existen los métodos UpdateEntity y UpdateStateAndStatusForEntity.

Una acción de actualización que usa la API de los útiles de XRM requiere una carga de datos. La carga útil de datos requiere la forma de un objeto Dictionary<string, CrmDataTypeWrapper>. CrmDataTypeWrapper se usa para informes a la interfaz del tipo de control debe ser aplicado al punto de datos al que está haciendo referencia.

Lea la siguiente información importante sobre el uso de una cadena de conexión en el código de la aplicación.

Importante

Microsoft recomienda utilizar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este artículo requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.

UpdateEntity

Este es el método de delimitador para actualizar cualquier registro de Dataverse, con la excepción del establecimiento del estado o del estado de un registro. Para usarlo, debe conocer la siguiente información: nombre de esquema de la tabla que desea actualizar, el campo de clave principal de la tabla que desea actualizar, el GUID del registro que desea actualizar y, por último, la matriz de carga de datos con la que desea actualizar.

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

Este método se usa para establecer el estado de un registro en Dataverse. Por ejemplo, todos los registros comienzan normalmente en un estado "abierto". El nombre del estado cambia en función del tipo de registro o incluso de las decisiones de los desarrolladores. Una oferta, por ejemplo, tiene varios estados posibles, Borrador, Activo, Cerrar, Perdido, Ganado.

La actualización del estado de una tabla requiere que sepa cuál es el estado de destino, ya sea por los nombres o por los identificadores. Tanto los nombres como los identificadores se pueden encontrar consultando la definición de la tabla y mirando los campos de estado y estado. En este ejemplo se mostrará cómo establecer el estado de un registro de cuenta en Inactivo.

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

Consulte también

Use útiles de XRM para conectarse a Dataverse
Usar herramientas de API XRM para ejecutar acciones en Dataverse