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