Tabelrijen koppelen en ontkoppelen met behulp van de web-API

U kunt afzonderlijke records in tabelrijen koppelen aan andere records met behulp van relaties die bestaan tussen de tabeldefinities. In OData worden de relaties uitgedrukt als navigatie-eigenschappen.

U kunt ontdekken welke navigatie-eigenschappen aanwezig zijn in het $metadata servicedocument. Zie eigenschappen voor web-API-navigatie. Voor bestaande Dataverse-tabellen raadpleegt u de naslaginformatie over de Web-API EntityType

Voor elk entiteitstype bekijkt u de genoteerde eenwaardige en verzamelingswaardige navigatie-eigenschappen.

In de volgende tabel worden de drie typen relaties tussen tabellen in Dataverse beschreven.

Type Beschrijving Example
Een-op-veel Aan één record kunnen veel records zijn gekoppeld. Een account-record kan veel records voor contactpersonen bevatten in de contact_customer_accountsnavigatie-eigenschap met een verzamelingswaarde.
Veel-op-een Veel records kunnen aan één record worden gekoppeld.

Veel-op-een is de gespiegelde afbeelding van een een-op-veel-relatie. Er is maar één relatie.
Meerdere records voor contactpersonen kunnen worden gekoppeld aan één accountrecord met behulp van de parentcustomerid_accountnavigatie-eigenschap met één waarde.
Veel-op-veel Veel records kunnen worden gekoppeld aan veel records. Elke beveiligingsrol (rol) kan verwijzingen bevatten naar de definitie van een systemuser.
Beide tabellen hebben een systemuserroles_associationnavigatie-eigenschap met een verzamelingswaarde.

Navigatie-eigenschappen met één waarde gebruiken

Voor bestaande records aan de veelzijde van een een-op-veel- of veel-op-een-relatie kunt u het record koppelen door een URI-referentie naar het andere record te definiëren. De eenvoudigste en meest voorkomende manier om dit te doen, is door de @odata.bind aantekening toe te voegen aan de naam van de navigatie-eigenschap met één waarde en vervolgens de waarde in te stellen als de URI op de andere record in een PATCH aanvraag.

Koppelen aan een navigatie-eigenschap met één waarde

Als u bijvoorbeeld een record van een contactpersoon aan een accountrecord wilt koppelen met behulp van de parentcustomerid_account navigatie-eigenschap met één waarde:

Verzoek:

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)"
}

Antwoord:

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

Zoals beschreven in Tabelrijen koppelen bij maken, kunt u ook op dezelfde manier nieuwe records koppelen aan bestaande records.

Ontkoppelen met behulp van een navigatie-eigenschap met één waarde

Als u de koppeling wilt loskoppelen, stelt u de waarde in op null.

Verzoek:

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
}

Antwoord:

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

Wanneer u deze methode loskoppelt, neem de @odata.bind aantekening niet op. Gebruik de naam van de navigatie-eigenschap met één waarde:

Verzoek:

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
}

Antwoord:

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

Meer informatie: Basisupdate

Andere methoden

U kunt andere methoden gebruiken om dezelfde resultaten te bereiken die eerder zijn beschreven met navigatie-eigenschappen met één waarde.

Gebruik de volgende PUT aanvraag om de waarde van de parentcustomerid_account navigatie-eigenschap met één waarde in te stellen:

Verzoek:

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)"
}

Antwoord:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Opmerking

U moet een absolute URL gebruiken bij het instellen van de waarde voor @odata.id.

Als u de verwijzing wilt verwijderen, gebruikt u deze DELETE aanvraag:

Verzoek:

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

Antwoord:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Navigatie-eigenschappen met verzamelingswaarde gebruiken

Met OData hebben beide zijden van een veel-op-veel-relatie navigatie-eigenschappen met verzamelingswaarden. Voor een-op-veel- en veel-op-een-relaties heeft de tabel aan de 'een'-zijde een navigatie-eigenschap met een verzamelingswaarde. Er is geen verschil in hoe u met een van deze typen relaties werkt terwijl u navigatie-eigenschappen met verzamelingswaarden gebruikt. In deze sectie wordt beschreven hoe u kunt werken met navigatie-eigenschappen met verzamelingswaarden voor elk type relatie.

Een record toevoegen aan een verzameling

In het volgende voorbeeld ziet u hoe u een contactrecord toevoegt aan de accountcontact_customer_accounts-verzameling die deel uitmaakt van een één-op-veel-relatie.

Verzoek:

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)"
}

Antwoord:

HTTP/1.1 204 NoContent
OData-Version: 4.0

In het volgende voorbeeld ziet u hoe u een rol record toevoegt aan de systemuser-verzamelingsystemuserroles_association. Dit is een veel-op-veel-relatie.

Verzoek:

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)"
}

Antwoord:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Een record uit een verzameling verwijderen

In het volgende voorbeeld ziet u hoe u een record van een contactpersoon uit de accountverzamelingcontact_customer_accounts verwijdert wanneer de contactwaarde contactid gelijk is aan 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.

Verzoek:

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

Antwoord:

HTTP/1.1 204 NoContent
OData-Version: 4.0

De volgende aanvraag werkt ook:

Verzoek:

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

Antwoord:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Zie ook

Web-API Basic Operations Sample (C#)
Web-API Basic Operations Sample (JavaScript aan clientzijde)
Bewerkingen uitvoeren met de web-API
Http-aanvragen opstellen en fouten afhandelen
Query's uitvoeren op gegevens met behulp van de web-API
Een tabelrij maken met behulp van de web-API
Een tabelrij ophalen met behulp van de web-API
Tabelrijen bijwerken en verwijderen met behulp van de web-API
Web-API-functies gebruiken
Web-API-acties gebruiken
Batchbewerkingen uitvoeren met behulp van de web-API
Een andere gebruiker imiteren met behulp van de web-API
Voorwaardelijke bewerkingen uitvoeren met behulp van de web-API