Delen via


Voorbeeld: Optimistische gelijktijdigheid gebruiken bij bijwerken en verwijderen

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Laat zien hoe u de functie voor optimistisch gelijktijdigheid kunt gebruiken die is geïntroduceerd in Update 1 voor Microsoft Dynamics CRM Online 2015 om eventueel gegevensverlies te voorkomen tijdens het bijwerken of verwijderen van entiteitsrecords. Zie dit onderwerp: Potentieel gegevensverlies bij gebruik van optimistische gelijktijdigheid beperken voor meer informatie over de gebruikte techniek.

Het volledige voorbeeld kan worden gedownload van MSDN: Optimistische gelijktijdigheid gebruiken bij bijwerken en verwijderen.

Vereisten

Als u dit voorbeeld wilt uitvoeren, moet u beschikken over:

  • Toegang tot een Update 1 voor Microsoft Dynamics CRM Online 2015-organisatie.

  • Microsoft .NET Framework 4.5.2 geïnstalleerd op uw ontwikkelingscomputer.

  • Een actieve internetverbinding voor de vereiste NuGet-pakketten voor automatisch downloaden bij het bouwen van het voorbeeld.

In dit onderwerp

Wat dit voorbeeld doet

NuGet-pakketten installeren

Het voorbeeld uitvoeren

Wat dit voorbeeld doet

In dit voorbeeld wordt het gebruik van optimistische gelijktijdigheid bij bijwerken en verwijderen getoond. Er worden codestukjes weergegeven die alleen de belangrijkste onderdelen van het voorbeeld laten zien. In dit voorbeeld wordt het gelijktijdigheidgedrag op de bijwerk- en verwijderaanvragen ingesteld zodat de server controleert op een bepaalde versie van een recordtype account voor deze bewerkingen. Als de update of verwijdering wordt geprobeerd met een record met een andere rijversie, doet zich een uitzondering voor. Anders slaagt de bewerking.


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

NuGet-pakketten installeren

  1. Download dit voorbeeld en extraheer de bestanden.

  2. Navigeer naar de map C# en open het oplossingsbestand in Microsoft Visual Studio.

  3. Klik in Oplossingenverkenner met de rechtermuisknop op het project en kies NuGet-pakketten beheren.

  4. Kies in de vervolgkeuzelijst boven aan het dialoogvenster de optie Inclusief proefversie als u een Microsoft Dynamics CRM Online Preview-organisatie gebruikt. Kies anders Alleen stabiel.

  5. Sluit het dialoogvenster.

De vereiste pakketten worden automatisch geïnstalleerd wanneer u de oplossing bouwt.

Het voorbeeld uitvoeren

  1. Druk in Visual Studio op F5 om het voorbeeld te bouwen en uit te voeren. U wordt nu gevraagd de licenties te accepteren voor de NuGet-pakketten die moeten worden geïnstalleerd.

  2. Als u nog niet eerder een van de beheerde Microsoft Dynamics 365-codevoorbeelden hebt uitgevoerd, moet u gegevens invoeren voor het uitvoeren van de code. Voer anders het nummer voor een van de Dynamics 365-servers in die u eerder hebt ingesteld.

    Vraag

    Beschrijving

    Voer een servernaam en poort voor Dynamics 365 in [crm.dynamics.com]

    Typ de naam van uw Microsoft Dynamics 365-server. De standaardserver is Microsoft Dynamics CRM Online (crm.dynamics.com) in Noord-Amerika.

    Voorbeeld:
    crm5.dynamics.com

    Voeg niet de naam van de organisatie of Internet-protocol (HTTP of HTTPS) toe. U wordt daar later om gevraagd.

    Is deze organisatie ingericht in Microsoft Online Services (j/n) [n]

    Typ j als dit een Microsoft Online Services ingerichte organisatie is. Typ anders n.

    Domein\gebruikersnaam invoeren

    voor Microsoft Dynamics CRM Online voert u uw Microsoft-account in. Voorbeeld: someone@mydomain.onmicrosoft.com.

    Wachtwoord invoeren

    Typ uw wachtwoord. Uw wachtwoord wordt veilig opgeslagen in Referentiebeheer van Windows voor later hergebruik.

    Geef een organisatienummer op (1-n) [1]

    Typ uit de lijst met organisaties waartoe u behoort, typt het bijbehorende nummer. De standaardinstelling is 1, waarmee de eerste organisatie in de lijst wordt aangegeven.

  3. Het voorbeeld voert de bewerkingen uit die worden beschreven in Wat dit voorbeeld doet en vraagt u mogelijk om aanvullende opties.

  4. Als het voorbeeld is voltooid, drukt u op ENTER om het consolevenster te sluiten.

Zie ook

Potentieel gegevensverlies bij gebruik van optimistische gelijktijdigheid beperken

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht