Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Handlinger, der ændrer data, er en central del af web-API'en. Ud over simple opdaterings- og slettehandlinger kan du udføre handlinger på kolonner med en enkelt tabel (objektattributter) og oprette upsertanmodninger , der enten opdaterer eller indsætter data, afhængigt af om de findes.
Grundlæggende opdatering
Opdateringshandlinger bruger HTTP-verbet PATCH . Overfør et JSON-objekt, der indeholder de egenskaber, du vil opdatere, til den URI, der repræsenterer posten. Hvis opdateringen lykkes, returnerer svaret statussen 204 No Content.
Overskriften If-Match: * sikrer, at du ikke opretter en ny post, hvis du ved et uheld udfører en upsert-handling. Du kan få flere oplysninger under Forbyd oprettelse i upsert.
Vigtigt!
Når du opdaterer et objekt, skal du kun inkludere de egenskaber, du ændrer, i anmodningens brødtekst. Hvis du opdaterer et objekt ved at inkludere alle egenskaberne for et objekt, som du tidligere har hentet, opdaterer handlingen hver egenskab, selvom værdien er den samme. Denne opdatering kan forårsage systemhændelser, der udløser forretningslogik, som forventer, at værdierne er ændret. Det kan medføre, at egenskaber ser ud til at blive opdateret i overvågningsdata, når de faktisk ikke blev ændret.
Når du opdaterer egenskaben statecode , skal du altid angive den ønskede statuscode. Værdierne statecode og statuscode afhænger af hinanden. Der kan være flere gyldige statecode værdier for en given statuscode værdi. Hver kolonne har dog statecode konfigureret en enkelt DefaultStatus-værdi . Når du opdaterer statecode uden at angive en statuscode, angiver systemet standardværdien for status. Hvis du aktiverer overvågning i tabellen og statuscode kolonnen, registreres den ændrede værdi for statuscode kolonnen heller ikke i overvågningsdataene, medmindre du angiver dem i opdateringshandlingen.
Notat
Definitionen af attributter indeholder en RequiredLevel egenskab. Når denne egenskab er angivet til SystemRequired, kan du ikke angive disse attributter til en null-værdi. Du kan få flere oplysninger under Niveau for attributkrav.
I dette eksempel opdateres en eksisterende kontopost med værdien accountid 00000000-0000-0000-0000-00000000000001.
Bøn:
PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-Match: *
{
"name": "Updated Sample Account ",
"creditonhold": true,
"address1_latitude": 47.639583,
"description": "This is the updated description of the sample account",
"revenue": 6000000,
"accountcategorycode": 2
}
Svar:
HTTP/1.1 204 No Content
OData-Version: 4.0
Notat
Du kan få oplysninger om tilknytning og fjernelse af tilknytning af objekter ved opdatering under Brug af navigationsegenskaber med en enkelt værdi.
Opdater med returnerede data
Hvis du vil hente data fra et objekt, du opdaterer, skal du oprette din PATCH anmodning, så den returnerer data fra den opdaterede post med statussen 200 (OK). Du kan få dette resultat ved at bruge anmodningsheaderen Prefer: return=representation .
Hvis du vil styre, hvilke egenskaber der returneres, skal du føje $select forespørgselsindstillingen til URL-adressen for objektsættet. Forespørgselsindstillingen $expand ignoreres, hvis den bruges.
I dette eksempel opdateres en kontoenhed, og de ønskede data returneres i svaret.
Bøn:
PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json; charset=utf-8
Prefer: return=representation
If-Match: *
{"name":"Updated Sample Account"}
Svar:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: return=representation
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
"@odata.etag": "W/\"536537\"",
"accountid": "00000000-0000-0000-0000-000000000001",
"accountcategorycode": 1,
"description": "This is the description of the sample account",
"address1_latitude": 47.63958,
"creditonhold": false,
"name": "Updated Sample Account",
"createdon": "2016-09-28T23:14:00Z",
"revenue": 5000000.0000,
"_transactioncurrencyid_value": "048dddaa-6f7f-e611-80d3-00155db5e0b6"
}
Opdater flere poster i en enkelt anmodning
Den hurtigste måde at opdatere flere poster af samme type på i en enkelt anmodning er at bruge handlingen UpdateMultiple. Det er ikke alle standardtabeller, der understøtter denne handling, men det gør alle elastiske tabeller.
Flere oplysninger:
- Massehandlingbeskeder
- Eksempel: Web-API Brug massehandlinger
- Brug UpdateMultiple med elastiske tabeller
Opdater en enkelt egenskabsværdi
Hvis du vil opdatere en enkelt egenskabsværdi, skal du bruge en PUT anmodning og føje egenskabsnavnet til enhedens URI.
I følgende eksempel opdateres name egenskaben for en eksisterende account række med værdien accountid for 00000000-0000-0000-0000-000000000001.
Bøn:
PUT [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
{"value": "Updated Sample Account Name"}
Svar:
HTTP/1.1 204 No Content
OData-Version: 4.0
Slet en enkelt egenskabsværdi
Hvis du vil slette værdien af en enkelt egenskab, skal du bruge en DELETE anmodning med egenskabsnavnet føjet til enhedens URI.
I følgende eksempel slettes værdien af description egenskaben for en kontoenhed med værdien accountid af 00000000-0000-0000-0000-000000000001.
Bøn:
DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/description HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Svar:
HTTP/1.1 204 No Content
OData-Version: 4.0
Notat
Du kan ikke bruge denne fremgangsmåde med en navigationsegenskab med en enkelt værdi til at fjerne tilknytningen mellem to objekter. Du kan få en alternativ tilgang under Fjern tilknytning ved hjælp af en navigationsegenskab med en enkelt værdi.
Indsæt en tabelrække
En upsert-handling svarer til en opdatering. Den bruger en PATCH anmodning og bruger en URI til at referere til en bestemt post. Forskellen er, at hvis posten ikke findes, oprettes den. Hvis den allerede findes, opdateres den.
Upsert er værdifuld, når data synkroniseres mellem eksterne systemer. Det eksterne system indeholder muligvis ikke en reference til den primære nøgle i tabellen Dataverse, så du kan konfigurere alternative nøgler for tabellen Dataverse ved hjælp af værdier fra det eksterne system, der entydigt identificerer posten på begge systemer. Flere oplysninger: Definer alternative nøgler til referencerækker
Du kan se eventuelle alternative nøgler, der er defineret for en tabel, i anmærkningerne for objekttypen i dokumentet $metadata tjeneste. Flere oplysninger: Alternative nøgler.
I følgende eksempel er der en tabel med navnet sample_thing , der har en alternativ nøgle, der refererer til to kolonner: sample_key1 og sample_key2, som begge er defineret til at gemme heltalsværdier.
Bøn:
PATCH [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Content-Type: application/json
{
"sample_name": "1:1"
}
For både oprettelses- eller opdateringshandlinger får du det samme svar. Bemærk, hvordan svarheaderen OData-EntityId bruger nøgleværdierne i stedet for GUID'ens primære nøgle-id for posten.
Svar:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1)
Da svaret er det samme, kan du ikke vide, om handlingen repræsenterede en Create eller Update -handling.
Hvis du har brug for at vide det, kan du bruge anmodningsheaderen Prefer: return=representation . Når du bruger denne overskrift, får du et 201 Created svar, når der oprettes en post, og et 200 OK svar, når posten opdateres. Denne indstilling tilføjer en Retrieve handling, som har indflydelse på ydeevnen. Hvis du bruger anmodningsheaderen Prefer: return=representation , skal du sørge for, at du $select inkluderer den minimale mængde data, helst kun kolonnen med den primære nøgle. Flere oplysninger: Opdater med returnerede data og Opret med returnerede data.
Når du bruger alternative nøgler, skal du ikke medtage de alternative nøgleværdier i brødteksten i anmodningen.
- Når en upsert repræsenterer en
Update, ignoreres disse alternative nøgleværdier. Du kan ikke opdatere alternative nøgleværdier, mens du bruger dem til at identificere posten. - Når en upsert repræsenterer en
Create, angives nøgleværdierne i URL-adressen for posten, hvis de ikke findes i brødteksten. Det er derfor ikke nødvendigt at medtage dem i brødteksten i anmodningen.
Flere oplysninger: Brug Upsert til at oprette eller opdatere en post
Notat
Når du opretter en ny post, giver du normalt systemet mulighed for at tildele en GUID-værdi for den primære nøgle. Denne fremgangsmåde er bedst, fordi systemet genererer nøgler, der er optimeret til indekset, og dette valg forbedrer ydeevnen. Men hvis du har brug for at oprette en post med en bestemt primær nøgle-værdi, f.eks. når nøgle-GUID-værdien genereres af et eksternt system, upsert gør handlingen det på en måde.
Undgå oprettelse eller opdatering med upsert
Nogle gange vil du udføre en upsert , men forhindre en af de potentielle handlinger: enten oprette eller opdatere. Du kan forhindre disse handlinger ved hjælp If-Match af overskrifterne eller If-None-Match . Du kan få mere at vide under Begræns upsert-handlinger.
Grundlæggende sletning
En sletningshandling er ligetil. Brug verbet DELETE sammen med URI'en for det objekt, du vil slette. I denne eksempelmeddelelse slettes et kontoobjekt med den primære nøgleværdi accountid , der 00000000-0000-0000-0000-000000000001er lig med .
Bøn:
DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Svar:
Hvis enheden findes, får du et normalt svar med status 204 for at angive, at sletningen lykkedes. Hvis enheden ikke findes, får du et svar med status 404.
HTTP/1.1 204 No Content
OData-Version: 4.0
Søge efter dubletposter
Du kan finde flere oplysninger om, hvordan du kontrollerer, om der er dublerede poster under en opdateringshandling, under Registrer dubletter under opdateringshandlingen ved hjælp af web-API'en.
Slet flere poster i en enkelt anmodning
Hvis du vil slette flere poster af samme type i en enkelt anmodning, skal du bruge handlingen DeleteMultiple . Standardtabeller understøtter ikke denne DeleteMultiple handling, men det gør alle elastiske tabeller.
Notat
I forbindelse med standardtabeller skal du bruge handlingen BulkDelete. Denne handling aktiverer asynkron sletning af poster, der svarer til en forespørgsel. Du kan få flere oplysninger under Slet data samlet.
Flere oplysninger:
Opdater og slet dokumenter i lagerpartitioner
Hvis du opdaterer eller sletter elastiske tabeldata, der er gemt i partitioner, skal du angive partitionsnøglen, når du får adgang til disse data.
Flere oplysninger: Valg af en PartitionId-værdi
Se også
Eksempel på grundlæggende handlinger for Web API (C#)
Web API Basic Operations Sample (JavaScript på klientsiden)
Udføre handlinger ved hjælp af Web-API'en
Opret Http-anmodninger, og håndter fejl
Forespørg om data ved hjælp af web-API'en
Oprette en tabelrække ved hjælp af Web-API'en
Hent en tabelrække ved hjælp af Web-API'en
Tilknyt og fjern tilknytning af tabelrækker ved hjælp af web-API'en
Brug web-API-funktioner
Bruge Web API-handlinger
Udfør batchhandlinger ved hjælp af web-API'en
Repræsenter en anden bruger ved hjælp af web-API'en
Udfør betingede handlinger ved hjælp af web-API'en