Share via


Reducer potentielle datatab ved hjælp af optimistisk samtidighed

 

Udgivet: november 2016

Gælder for: Dynamics CRM 2015

På et flertrådet flerbrugersystem som Microsoft Dynamics 365, foretages operationer og dataændringer ofte parallelt. Der opstår et problem, når to eller flere opdaterings- eller slettehandlinger på de samme data sker på samme tid. Denne situation kan potentielt resultere i tab af data. Denne SDK-version indeholder muligheden for, at programmerne kan registrere, om en objektpost er ændret på serveren i tidsrummet mellem, at dit program hentede posten,og når det forsøger at opdatere eller slette posten.

Bemærk

For Microsoft Dynamics CRM Online-organisationer er denne funktion kun tilgængelig, hvis organisationen har opdateret til Dynamics CRM Online 2015 Update 1. Denne funktion er ikke tilgængelig for Dynamics CRM (i det lokale miljø).

Optimistisk samtidighed understøttes på alle out-of-box-enheder, der er aktiveret for offlinesynkronisering og alle brugerdefinerede objekter. Du kan bestemme, om et objekt understøtter optimistisk samtidighed, ved at hente objektets metadata via et SDK-kald, eller ved at se metadataene ved hjælp af Metadata-browseren og kontrollere, om attributten IsOptimisticConcurrencyEnabled er indstillet til true. Denne egenskab er som standard indstillet til true for brugerdefinerede objekter.Du kan få vist objektmetadataene for din virksomhed ved at installere Metadata-browserløsningen, der er beskrevet i Gennemse metadata for organisationen. Du kan også få vist metadataene for en ikke-tilpasset virksomhed i Excel-filen kaldet EntityMetadata.xlsx, der findes i den øverste mappe i SDK download.

Dette emne indeholder

Aktivér optimistisk samtidighed

Opdater eller slet en post

Håndtering af undtagelser

Aktivér optimistisk samtidighed

Du kan aktivere funktionsmåden til kontrol af optimistisk samtidighed under udførelse af en UpdateRequest ved at indstille egenskaben ConcurrencyBehavior for anmodningen til IfRowVersionMatches. På samme måde kan du indstille egenskaben ConcurrencyBehavior for en DeleteRequest.

Når du bruger organisationsservicekonteksten til at foretage dataændringer, skal du angive ConcurrencyBehavior i OrganizationServiceContext objektet. Denne værdi overføres til alle UpdateRequest- og DeleteRequest-meddelelser, der bruges af OrganizationServiceContext, når SaveChanges kaldes.

Optimistisk samtidighed funktionsmåden kan kun angives via et SDK-kald. Der er aktuelt ingen indstilling for det i en formular i webprogrammet.

Opdater eller slet en post

Når du har hentet en objektpost, skal du åbne attributten RowVersion for at hente den aktuelle version af denne post. I objektet, som du bruger som Target i UpdateRequest, skal du indstille egenskaben RowVersion til samme værdi fra den hentede post og udføre anmodningen. På samme måde skal du i det objektreferenceobjekt, som du bruger som Target i DeleteRequest, indstille egenskaben RowVersion til den samme værdi for rækkeversion fra den hentede post og udføre anmodningen.

Hvis objektet, der er overført til UpdateRequest, indeholder relaterede objekter, anvendes samme funktionsmåde på alle opdateringer, der bruger de rækkeversioner, der følger med hver enkelt objekt.

Når anmodningen modtages af platformen, foretages en sammenligning af den aktuelle objektposts rækkeversion og rækkeversionen i anmodningen. Hvis rækkeversionerne stemmer overens og ConcurrencyBehavior er indstillet til IfRowVersionMatches, lykkes handlingen. Ellers returneres en fejlundtagelse.

Håndtering af undtagelser

Der er flere fejltilstande, der kan returneres i en FaultException<OrganizationServiceFault> fra kaldet til webtjenesten ved hjælp af optimistisk samtidighed.

  • ConcurrencyVersionMismatch (kode = 2147088254)

    Når der findes en rækkeversion og IfVersionMatches-funktionsmåden er angivet, returneres en fejl, hvis den eksisterende postversion ikke stemmer overens med den rækkeversion, der er angivet i anmodningen.

  • ConcurrencyVersionNotProvided (kode =-2147088253

    Når IfVersionMatches-funktionsmåden er angivet, og der ikke er angivet en værdi for rækkeversionen, returneres en fejl.

  • OptimisticConcurrencyNotEnabled (kode = 2147088243)

    Når IfVersionMatches-funktionsmåden er angivet i en opdatering til et objekt, og hvor optimistisk samtidighed ikke er aktiveret, returneres en fejl.

Du kan kontrollere egenskaben Kode for den returnerede fejl for at afgøre, om fejlen er relateret til optimistisk samtidighed. Koderne for fejltilstandene, der blev vist tidligere, er hentet fra ErrorCodes.cs-hjælpekoden.

Se også

Skriv program- og serverudvidelser
Eksempel: Bruge optimistisk samtidighed til opdaterings- og sletningshandlinger

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret