Partilhar via


Exemplo: Use a simultaneidade otimista com as operações de atualização e exclusão

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Mostra como usar o recurso da simultaneidade otimista, introduzido no Atualização 1 do Microsoft Dynamics CRM Online 2015, para impedir a perda de dados potencial ao executar uma atualização ou uma exclusão de registros de entidade. Para obter mais detalhes sobre as técnicas usadas, consulte este tópico: Reduzir a perda de dados potencial usando a simultaneidade otimista

O exemplo completo pode ser baixado em MSDN: Use a simultaneidade otimista com operações de exclusão e atualização.

Pré-requisitos

Para executar este exemplo, é necessário:

  • Acessar uma organização do Atualização 1 do Microsoft Dynamics CRM Online 2015.

  • O Microsoft .NET Framework 4.5.2 é instalado em seu computador de desenvolvimento.

  • É necessário ter uma conexão ativa com a Internet para baixar os pacotes NuGet automaticamente ao criar o exemplo.

Neste tópico

O que este exemplo faz

Instalar pacotes NuGet

Executar o exemplo

O que este exemplo faz

Este exemplo mostra como usar a simultaneidade otimista para as operações de atualização e exclusão. Trechos de código que mostram somente as principais seções do exemplo completo são mostrados. Esse exemplo define o comportamento da simultaneidade nas solicitações de atualização e exclusão para que o servidor verifique se há uma versão específica de um registro de conta para essas operações. Se houver tentativa de operações de atualização ou exclusão usando um registro com uma versão diferente de linha, ocorrerá uma exceção. Caso contrário, a operação será bem-sucedida.


// 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 pacotes NuGet

  1. Baixe este exemplo e extraia os arquivos.

  2. Navegue até a pasta C# e abra o arquivo de solução no Microsoft Visual Studio.

  3. No Solution Explorer, clique com o botão direito no projeto e selecione Gerenciar Pacotes NuGet.

  4. Na lista suspensa na parte superior da caixa de diálogo, selecione Incluir Pré-lançamento se estiver usando uma organização de visualização do Microsoft Dynamics CRM Online. Caso contrário, selecione Somente Estável.

  5. Feche a caixa de diálogo.

Os pacotes necessários são automaticamente instalados ao criar a solução.

Executar o exemplo

  1. No Visual Studio, pressione F5 para criar e executar o exemplo. Será solicitado que você aceite as licenças para os pacotes NuGet que devem ser instalados.

  2. Se você não tiver executado anteriormente um dos exemplos de código gerenciado do Microsoft Dynamics 365, será necessário inserir as informações para executar o código. Caso contrário, digite o número para um dos servidores do Dynamics 365 que você configurou anteriormente.

    Solicitar

    Descrição

    Digite um nome de servidor do Dynamics 365 e a porta [crm.dynamics.com]

    Digite o nome do seu servidor do Microsoft Dynamics 365. O padrão é Microsoft Dynamics CRM Online (crm.dynamics.com) na América do Norte.

    Exemplo:
    crm5.dynamics.com

    Não inclua o nome da sua organização ou protocolo Internet (http ou https). Você receberá uma solicitação para isso mais tarde.

    Esta organização foi provisionada no Microsoft Online Services (y/n) [n]

    Digite y se esta for uma organização provisionada pelo Microsoft Online Services. Caso contrário, digite n.

    Insira domínio\nome de usuário

    Para o Microsoft Dynamics CRM Online, insira seu Conta da Microsoft. Por exemplo: someone@mydomain.onmicrosoft.com.

    Insira a senha

    Digite sua senha. Sua senha é salva com segurança no Gerenciador de Credenciais do Windows para reutilização posterior.

    Especificar um número da organização (1-n) [1]

    Na lista de organizações mostradas que você participa, digite o número correspondente. O padrão é 1, indicando a primeira organização na lista.

  3. O exemplo executará as operações descritas em O que este exemplo faz e pode solicitar a você opções adicionais.

  4. Quando o exemplo for concluída, pressione ENTER para fechar a janela do console.

Confira Também

Reduzir a perda de dados potencial usando a simultaneidade otimista

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais