Dela via


Associera och avassociera tabellrader med hjälp av webb-API:et

Du kan associera enskilda poster i tabellrader med andra poster med hjälp av relationer som finns mellan tabelldefinitionerna. I OData uttrycks relationerna som navigeringsegenskaper.

Du kan identifiera vilka navigeringsegenskaper som finns i $metadata servicedokumentet. Se Navigeringsegenskaper för webb-API. För befintliga Dataverse-tabeller, se Web API EntityType-referensen för varje entitetstyp, se de angivna navigeringsegenskaperna för enkelvärde och samlingsvärde.

I följande tabell beskrivs de tre typerna av relationer mellan tabeller i Dataverse.

Typ Description Example
En-till-många En post kan ha många poster associerade med den. En kontopost kan ha många kontaktposter i den contact_customer_accountsnavigeringsegenskapen med samlingsvärden.
Många-till-en Många poster kan associeras med en enda post.

Många-till-en är spegelbilden av en en-till-många-relation. Det finns bara ett förhållande.
Flera kontaktposter kan associeras till en enda kontopost med hjälp av parentcustomerid_account.
Många-till-många Många poster kan associeras med många poster. Varje säkerhetsroll (roll) kan innehålla referenser till definitionen av en systemanvändare.
Båda dessa tabeller har en systemuserroles_associationnavigeringsegenskap med samlingsvärde.

Använda navigeringsegenskaper med enkelvärde

För befintliga poster på sidan många av en en-till-många- eller många-till-en-relation kan du associera posten genom att ange en URI-referens till den andra posten. Det enklaste och vanligaste sättet att göra detta är att lägga till annoteringen @odata.bind till namnet på den enkelvärdesnavigeringsegenskapen och sedan ange värdet som URI för den andra posten i en PATCH-begäran.

Associera med en navigeringsegenskap med endast ett värde

Om du till exempel vill associera en kontaktpost med ett konto med hjälp av den enkelvärda navigeringsegenskapen parentcustomerid_account:

Begäran:

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)

Enligt beskrivningen i Associera tabellrader vid skapande kan nya poster också associeras med befintliga poster på samma sätt.

Ta bort associering med en navigeringsegenskap med endast ett värde

Om du vill ta bort associationen kan du helt enkelt ange värdet till null.

Begäran:

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 avassocierar på det här sättet behöver du inte inkludera anteckningen @odata.bind . Du kan helt enkelt använda namnet på den enkelvärdesnavigeringsegenskapen:

Begäran:

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 information: Grundläggande uppdatering

Andra metoder

Det finns andra sätt att uppnå samma resultat som beskrevs tidigare med envärdesnavigeringsegenskaper.

Du kan använda följande PUT begäran för att ange värdet parentcustomerid_account för den enkelvärdesnavigeringsegenskapen:

Begäran:

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

Anmärkning

Obs! Du måste använda en absolut URL när du anger värdet för @odata.id.

Om du vill ta bort referensen kan du också använda den här DELETE begäran:

Begäran:

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

Använda navigeringsegenskaper med samlingsvärde

Med OData har båda sidor av en många-till-många-relation navigeringsegenskaper med samlingsvärden. För en-till-många- och många-till-en-relationer har tabellen på den 'One'-sidan en navigeringsegenskap med samlingsvärde. Det är ingen skillnad hur du arbetar med någon av dessa typer av relationer när du använder samlingsvärdesnavigeringsegenskaper. I det här avsnittet beskrivs hur du arbetar med navigeringsegenskaper för samlingsvärden med alla typer av relationer.

Lägga till en post i en samling

I följande exempel visas hur du lägger till en kontaktpost i kontosamlingencontact_customer_accounts , som ingår i en en-till-många-relation.

Begäran:

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

I följande exempel visas hur du lägger till en rollpost i samlingen systemusersystemuserroles_association som är en många-till-många-relation.

Begäran:

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

Ta bort en post från en samling

I följande exempel visas hur du tar bort en kontaktpost från kontosamlingencontact_customer_accounts där contactid kontaktens värde är 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.

Begäran:

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öljande begäran fungerar också:

Begäran:

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 även

Exempel på grundläggande åtgärder för webb-API (C#)
Exempel på grundläggande åtgärder för webb-API (JavaScript på klientsidan)
Utföra åtgärder med hjälp av webb-API
Skapa Http-begäranden och hantera fel
Fråga efter data med hjälp av webb-API:et
Skapa en tabellrad med hjälp av webb-API:et
Hämta en tabellrad med hjälp av webb-API:et
Uppdatera och ta bort tabellrader med hjälp av webb-API:et
Använda webb-API-funktioner
Använda Web API-åtgärder
Köra batchåtgärder med hjälp av webb-API:et
Personifiera en annan användare med hjälp av webb-API:et
Utföra villkorsstyrda åtgärder med hjälp av webb-API:et