Compartir a través de


Ejemplo: Uso de simultaneidad optimista con operaciones de actualización y eliminación

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Demuestra cómo usar la función de simultaneidad optimista, introducida en Actualización 1 de Microsoft Dynamics CRM Online 2015, para evitar la pérdida de datos potencial al realizar una actualización o una eliminación de registros de entidad. Para obtener más detalles sobre la técnica utilizada, consulte este tema: Reducir la pérdida potencial de datos mediante simultaneidad optimista

El ejemplo completo se puede descargar en MSDN: Uso de simultaneidad optimista con operaciones de actualización y eliminación.

Requisitos previos

Para ejecutar este ejemplo, debe tener:

  • Obtenga acceso a una organización de Actualización de Microsoft Dynamics CRM Online 2016 o Microsoft Dynamics 365 local.

  • Microsoft .NET Framework 4.5.2 instalado en el equipo de desarrollo.

  • Una conexión activa a Internet para los paquetes necesarios de NuGet para descargar automáticamente al crear el ejemplo.

En este tema

Qué hace este ejemplo

Instalar paquetes NuGet

Ejecutar el ejemplo

Qué hace este ejemplo

Este ejemplo muestra cómo usar simultaneidad optimista para operaciones de actualización y eliminación. Se muestran fragmentos de código que muestran solo las secciones principales del ejemplo. Este ejemplo configura el comportamiento de simultaneidad en las solicitudes de actualización y eliminación para que el servidor compruebe si hay una versión determinada de un registro de cuenta para esas operaciones. Si las operaciones de actualización o eliminación se intentan mediante un registro con otra versión de fila, se produce una excepción. De lo contrario, la operación es correcta.


// Connect to the Organization service. 
// The using statement assures that the service proxy will be properly disposed.
using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,
    serverConfig.Credentials, serverConfig.DeviceCredentials))
{
    CreateRequiredRecords();

    // Retrieve an account.
    var account = _serviceProxy.Retrieve("account", _accountId, new ColumnSet("name","creditlimit"));
    Console.WriteLine("\tThe row version of the created account is {0}", account.RowVersion);

    if (account != null)
    {
        // Create an in-memory account object from the retrieved account.
        Entity updatedAccount = new Entity()
        {
            LogicalName = account.LogicalName,
            Id = account.Id,
            RowVersion = account.RowVersion
        };

        // Update just the credit limit.
        updatedAccount["creditlimit"] = new Money(1000000);

        // Set the request's concurrency behavour to check for a row version match.
        UpdateRequest accountUpdate = new UpdateRequest()
        {
            Target = updatedAccount,
            ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
        };

        // Do the update.
        UpdateResponse accountUpdateResponse = (UpdateResponse) _serviceProxy.Execute(accountUpdate);
        Console.WriteLine("Account '{0}' updated with a credit limit of {1}.", account["name"], 
            ((Money)updatedAccount["creditlimit"]).Value);

        account = _serviceProxy.Retrieve("account", updatedAccount.Id, new ColumnSet());
        Console.WriteLine("\tThe row version of the updated account is {0}", account.RowVersion);
        _accountRowVersion = account.RowVersion;
    }

    DeleteRequiredRecords(promptforDelete);
}

// Delete the account record only if the row version matches.
EntityReference accountToDelete = new EntityReference("account", _accountId);
accountToDelete.RowVersion = _accountRowVersion;

DeleteRequest request = new DeleteRequest()
{
    Target = accountToDelete,
    ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
};

_serviceProxy.Execute(request);

Instalar paquetes NuGet

  1. Descargue este ejemplo y extraiga los archivos.

  2. Desplácese hasta la carpeta C# y abra el archivo de solución en Microsoft Visual Studio.

  3. En Visual Studio, haga clic con el botón secundario en el proyecto y haga clic en Administrar paquetes de NuGet.

  4. En la lista desplegable situada en la parte superior del diálogo, haga clic en Incluir vista previa si usa una organización de vista previa de Microsoft Dynamics 365 (online). De lo contrario, haga clic en Solo estable.

  5. Cierre el diálogo.

Los paquetes requeridos se instalan automáticamente cuando se crea la solución.

Ejecutar el ejemplo

  1. En Visual Studio, pulse F5 para generar y ejecutar el ejemplo. Se le pedirá que acepte las licencias de los paquetes de NuGet que se deben instalar.

  2. Si no ha ejecutado uno de los ejemplos de código administrado de Microsoft Dynamics 365 antes, deberá especificar información para ejecutar el código. De lo contrario, escriba el número de uno de los servidores de Dynamics 365 que configuró anteriormente.

    Pregunta

    Descripción

    Escriba un nombre de servidor y un puerto de Dynamics 365 [crm.dynamics.com]

    Escriba el nombre del servidor de Microsoft Dynamics 365. El valor predeterminado es Microsoft Dynamics 365 (online) (crm.dynamics.com) en Norteamérica.

    Ejemplo:
    crm5.dynamics.com

    No incluya el nombre de la organización o protocolo de Internet (http o https). Se le pedirá esta información más adelante.

    Está esta organización aprovisionada en Microsoft Online Services ([s/n)n]

    Escriba s si se trata de una organización aprovisionada para Microsoft Online Services. De lo contrario, escriba n.

    Escriba domain\username

    Para Microsoft Dynamics 365 (online), escriba su Cuenta de Microsoft. Por ejemplo: someone@mydomain.onmicrosoft.com.

    Escriba la contraseña

    Escriba la contraseña. Su contraseña se guardará con seguridad en el Administrador de credenciales de Windows para poder utilizarla posteriormente.

    Especifique un número de organización (1-n) [1]

    En la lista de organizaciones que muestra que usted pertenece, escriba el número correspondiente. El valor predeterminado es 1, que indica la primera organización de la lista.

  3. El ejemplo realizará las operaciones descritas en Qué hace este ejemplo y puede pedirle opciones adicionales.

  4. Cuando se completa el ejemplo, presione ENTRAR para cerrar la ventana de la consola.

Ver también

Reducir la pérdida potencial de datos mediante simultaneidad optimista

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright