Del via


Knytte til og koble fra tabellrader ved hjelp av web-API-en

Du kan knytte individuelle poster i tabellrader til andre poster ved hjelp av relasjoner som finnes mellom tabelldefinisjonene. I OData uttrykkes relasjonene som navigasjonsegenskaper.

Du kan finne ut hvilke navigasjonsegenskaper som finnes i $metadata tjenestedokumentet. Se Web API-navigasjonsegenskaper. Hvis du vil ha eksisterende Dataverse-tabeller, kan du se Web API EntityType Reference, for hver enhetstype, se de oppførte navigasjonsegenskapene med én verdi og samlingsverdi.

Tabellen nedenfor beskriver de tre typene relasjoner mellom tabeller i Dataverse.

Type Beskrivelse Eksempel
Én-til-mange Én post kan ha mange poster knyttet til den. En kontoregister kan ha mange kontaktoppføringer i en contact_customer_accountssamlingsverdi-navigasjonsegenskap.
Mange-til-én Mange poster kan knyttes til én post.

Mange-til-én er speilbildet av en én-til-mange-relasjon. Det er bare én relasjon.
Flere kontaktoppføringer kan knyttes til én enkelt forretningsforbindelsesoppføring ved hjelp av parentcustomerid_account med én verdi.
Mange-til-mange Mange oppføringer kan knyttes til mange oppføringer. Hver sikkerhetsrolle (rolle) kan inneholde referanser til definisjonen av en systembruker.
Begge disse tabellene har en systemuserroles_associationnavigasjonsegenskap med samlingsverdi.

Bruke navigasjonsegenskaper med én verdi

For eksisterende poster på mange-siden i en én-til-mange- eller mange-til-én-relasjon kan du knytte posten ved å angi en URI-referanse til den andre posten. Den enkleste og vanligste måten å gjøre dette på, er å tilføye @odata.bind merknaden til navnet på navigasjonsegenskapen med én verdi og deretter angi verdien som URI til den andre posten i en PATCH forespørsel.

Knytt til en navigasjonsegenskap med én verdi

Hvis du for eksempel vil knytte en kontaktoppføring til en konto ved hjelp av navigasjonsegenskapen med én parentcustomerid_account verdi:

Anmodning:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account@odata.bind": "accounts(ce9eaaef-f718-ed11-b83e-00224837179f)"
}

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Som beskrevet i Tilknytte tabellrader ved oppretting, kan nye poster også knyttes til eksisterende poster på samme måte.

Opphev tilknytning til en navigasjonsegenskap med én verdi

Hvis du vil fjerne tilknytningen, kan du ganske enkelt angi verdien til null.

Anmodning:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account@odata.bind": null
}

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Når du kobler fra på denne måten, trenger du ikke å inkludere merknaden @odata.bind . Du kan ganske enkelt bruke navnet på navigasjonsegenskapen med én verdi:

Anmodning:

PATCH [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
If-Match: *
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "parentcustomerid_account": null
}

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0
OData-EntityId: [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)

Mer informasjon: Grunnleggende oppdatering

Andre metoder

Det finnes andre måter å oppnå de samme resultatene som er beskrevet tidligere med navigasjonsegenskaper med én verdi.

Du kan bruke følgende PUT forespørsel til å angi verdien for navigasjonsegenskapen med én parentcustomerid_account verdi:

Anmodning:

PUT [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)"
}

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Note

Obs! Du må bruke en absolutt URL-adresse når du angir verdien for @odata.id.

Hvis du vil fjerne referansen, kan du også bruke denne DELETE forespørselen:

Anmodning:

DELETE [Organization Uri]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/parentcustomerid_account/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Bruke navigasjonsegenskaper med samlingsverdi

Med OData har begge sider av en mange-til-mange-relasjon navigasjonsegenskaper med samlingsverdi. For én-til-mange og mange-til-én relasjoner, har tabellen på én-siden en navigasjonsegenskap med samling som verdi. Det er ingen forskjell på hvordan du arbeider med noen av disse typene relasjoner mens du bruker navigasjonsegenskaper med samlingsverdi. Denne delen beskriver hvordan du arbeider med samlingsverdibaserte navigasjonsegenskaper med alle typer relasjoner.

Legge til en post i en samling

Følgende eksempel viser hvordan du legger til en kontaktoppføring i kontosamlingencontact_customer_accounts , som er en del av en én-til-mange-relasjon.

Anmodning:

POST [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)"
}

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Følgende eksempel viser hvordan du legger til en rollepost i systembrukersamlingensystemuserroles_association , som er en mange-til-mange-relasjon.

Anmodning:

POST [Organization Uri]/api/data/v9.2/systemusers(34dcbaf5-f718-ed11-b83e-00224837179f)/systemuserroles_association/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

{
  "@odata.id": "[Organization URI]/api/data/v9.2/roles(886b280c-6396-4d56-a0a3-2c1b0a50ceb0)"
}

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Fjerne en post fra en samling

Eksemplet nedenfor viser hvordan du fjerner en kontaktoppføring til kontosamlingencontact_customer_accounts der kontaktverdien contactid er 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.

Anmodning:

DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/$ref HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Følgende forespørsel fungerer også:

Anmodning:

DELETE [Organization Uri]/api/data/v9.2/accounts(ce9eaaef-f718-ed11-b83e-00224837179f)/contact_customer_accounts/$ref?$id=[Organization URI]/api/data/v9.2/contacts(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Accept: application/json

Svar:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Se også

Eksempel på grunnleggende operasjoner for web-API (C#)
Eksempel på web-API Basic Operations (JavaScript på klientsiden)
Utføre operasjoner ved hjelp av web-API-en
Skrive Http-forespørsler og håndtere feil
Spør etter data ved hjelp av nett-API-en
Opprett en tabellrad ved hjelp av nett-API-en
Hente en tabellrad ved hjelp av web-API-en
Oppdatere og slette tabellrader ved hjelp av web-API-en
Bruke web-API-funksjoner
Bruk nett-API-handlinger
Utføre satsvise operasjoner ved hjelp av web-API-en
Representere en annen bruker ved hjelp av web-API-en
Utføre betingede operasjoner ved hjelp av web-API-en