Voorbeeld: Optimistische gelijktijdigheid gebruiken bij bijwerken en verwijderen
Gepubliceerd: januari 2017
Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
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:
Krijg toegang tot een Update voor Microsoft Dynamics CRM Online 2016- of een Microsoft Dynamics 365 on-premises-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
Download dit voorbeeld en extraheer de bestanden.
Navigeer naar de map C# en open het oplossingsbestand in Microsoft Visual Studio.
Klik in Oplossingenverkenner met de rechtermuisknop op het project en klik op NuGet-pakketten beheren.
Klik in de vervolgkeuzelijst boven aan het dialoogvenster op Inclusief proefversie als u een Microsoft Dynamics 365 (online) Preview-organisatie gebruikt. Klik anders op Alleen stabiel.
Sluit het dialoogvenster.
De vereiste pakketten worden automatisch geïnstalleerd wanneer u de oplossing bouwt.
Het voorbeeld uitvoeren
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.
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 365 (online) (crm.dynamics.com) in Noord-Amerika.
Voorbeeld:
crm5.dynamics.comVoeg 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 365 (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.
Het voorbeeld voert de bewerkingen uit die worden beschreven in Wat dit voorbeeld doet en vraagt u mogelijk om aanvullende opties.
Als het voorbeeld is voltooid, drukt u op ENTER om het consolevenster te sluiten.
Zie ook
Potentieel gegevensverlies bij gebruik van optimistische gelijktijdigheid beperken
Microsoft Dynamics 365
© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht