Delen via


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. Zie voor bestaande Dataverse-tabellen de Web API EntityType naslaginformatie; per entiteitstype, zie de vermelde navigatie-eigenschappen met een enkele waarde en verzamelingwaarde.

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

Typologie Description 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 veel-zijde van een één-op-veel of veel-op-één-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 account 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, kunnen nieuwe records ook op dezelfde manier worden gekoppeld aan bestaande records.

Loskoppelen van een navigatie-eigenschap met één waarde

Als u de koppeling wilt loskoppelen, kunt u de waarde eenvoudig instellen 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 op deze manier loskoppelt, hoeft u de @odata.bind notatie niet op te nemen. U kunt gewoon de naam van de navigatie-eigenschap met één waarde gebruiken:

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

Er zijn andere manieren om dezelfde resultaten te bereiken die eerder zijn beschreven met navigatie-eigenschappen met één waarde.

U kunt de volgende PUT aanvraag gebruiken 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

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

Als u de verwijzing wilt verwijderen, kunt u deze DELETE aanvraag ook gebruiken:

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 één-op-veel- en veel-op-één-relaties heeft de tabel aan de 'Een'-zijde een collectie-gewaarde navigatie-eigenschap. Er is geen verschil hoe u met een van deze typen relaties werkt terwijl u navigatie-eigenschappen met een verzamelingswaarde gebruikt. In deze sectie wordt beschreven hoe u kunt werken met navigatie-eigenschappen met verzamelingswaarden met 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 record rol toevoegt aan de systemusersystemuserroles_association-verzameling. 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