Condividi tramite


Esempio Utilizzare la concorrenza ottimistica con le operazioni di aggiornamento ed eliminazione

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

Illustra come utilizzare la funzionalità di concorrenza ottimistica, introdotta in Aggiornamento 1 di Microsoft Dynamics CRM Online 2015, per evitare la possibile perdita di dati quando si esegue un aggiornamento o si eliminano i record di entità. Per ulteriori informazioni sulla tecnica utilizzata, vedere l'argomento: Ridurre la perdita potenziale dei dati utilizzando la concorrenza ottimistica

L'esempio completo può essere scaricato all'indirizzo MSDN: Utilizza concorrenza ottimistica con operazioni di aggiornamento ed eliminazione.

Prerequisiti

Per eseguire questo esempio è necessario disporre di:

  • Accesso a un'organizzazione Aggiornamento 1 di Microsoft Dynamics CRM Online 2015.

  • È necessario che Microsoft .NET Framework 4.5.2 sia installato nel computer di sviluppo.

  • Una connessione Internet attiva per i pacchetti NuGet obbligatori per eseguire il download automaticamente quando si crea l'esempio.

In questo argomento

Esempio

Installare i pacchetti di NuGet

Eseguire l'esempio

Esempio

In questo esempio viene illustrato come utilizzare la concorrenza ottimistica per operazioni di aggiornamento ed eliminazione. Sono utilizzati i frammenti di codice che mostrano solo le sezioni principali dell'esempio completo. In questo esempio viene impostato il comportamento della concorrenza alle richieste di aggiornamento ed eliminazione in modo che il server controlli una versione specifica di un record di account per tali operazioni. Se vengono tentate le operazioni di aggiornamento o di eliminazione utilizzando un record con una versione di riga diversa, verrà generata un'eccezione. In caso contrario, l'operazione ha esito positivo.


// 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);

Installare i pacchetti di NuGet

  1. Scarica questo esempio ed estrai i file.

  2. Passare alla cartella C# e aprire il file di soluzione in Microsoft Visual Studio.

  3. In Esplora soluzioni, fai clic con il pulsante destro del mouse sul progetto e scegli Gestisci pacchetti NuGet.

  4. Nell'elenco a discesa nella parte superiore della finestra di dialogo, selezionare Includi versione di valutazione se si utilizza un'organizzazione di anteprima Microsoft Dynamics CRM Online. In caso contrario, selezionare Solo stabile.

  5. Chiudere la finestra di dialogo.

I pacchetti obbligatori vengono installati automaticamente quando viene creata la soluzione.

Eseguire l'esempio

  1. In Visual Studio premere F5 per la creazione e l'esecuzione dell'esempio. Verrà richiesto di accettare le licenze dei pacchetti NuGet che devono essere installati.

  2. Se in precedenza non è stato eseguito uno degli esempi di codice gestito Microsoft Dynamics 365, sarà necessario immettere le informazioni per eseguire il codice. In caso contrario, immettere il numero di uno dei server Dynamics 365 installati in precedenza.

    Chiedi conferma

    Descrizione

    Immettere un nome del server Dynamics 365 e la porta [crm.dynamics.com]

    Digitare il nome del server Microsoft Dynamics 365. L'impostazione predefinita è Microsoft Dynamics CRM Online (crm.dynamics.com) nell'America del Nord.

    Esempio:
    crm5.dynamics.com

    Non includere il nome dell'organizzazione o l'indirizzo IP (HTTP oppure HTTPS). Verrà richiesto in un secondo momento.

    È stato eseguito il provisioning dell'organizzazione in Microsoft Online Services? (sì/no) [n]

    Digitare y se si tratta un'organizzazione Microsoft Online Services di cui è stato eseguito il provisioning. Altrimenti, digitare n.

    Immetti dominio\nomeutente

    Per Microsoft Dynamics CRM Online, immettere il proprio Account Microsoft. Ad esempio: someone@mydomain.onmicrosoft.com.

    Immetti password

    Digitare la password. La password viene salvata in modo sicuro in Gestione credenziali di Windows per il riutilizzo futuro.

    Specifica un numero di organizzazione (1-n) [1]

    Nell'elenco delle organizzazioni visualizzato di cui si è membri, digitare il numero corrispondente. L'impostazione predefinita è 1 e indica la prima organizzazione dell'elenco.

  3. In questo esempio vengono eseguite le operazioni descritte in Esempio e potrebbero essere richieste opzioni aggiuntive.

  4. Al termine dell'esempio, premi INVIO per chiudere la finestra della console.

Vedere anche

Ridurre la perdita potenziale dei dati utilizzando la concorrenza ottimistica

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright