Deli putem


Povežite i odvojite redove tabele koristeći Veb API

Možete povezati pojedinačne zapise u redovima tabele sa drugim zapisima koristeći odnose koji postoje između definicija tabele. U OData, odnosi su izraženi kao svojstva navigacije.

Možete otkriti koje navigaцione osobine postoje u servisnom dokumentu $metadata. Pogledajte Veb API Navigation Properties. Za postojeće Dataverse tabele, pogledajte Veb API EntityTipe Reference, za svaki tip entiteta, pogledajte navedene jednovredne i kolekcionosne navigacione osobine.

Sledeća tabela opisuje tri vrste odnosa između tabela u Dataverse.

Tip Opis Primer
Jedan-na-mnogo Jedan zapis može imati mnogo zapisa povezanih sa njim. Zapis računa može imati mnogo zapisa kontakata u navigaцionoj osobini u vrednosti naknaцije kolekцije.contact_customer_accounts
Mnogo-na-jedan Mnogi zapisi mogu biti povezani sa jednim zapisom.

Many-to-One je odraz u ogledalu odnosa jedan-na-mnogi. Postoji samo jedna veza.
Višestruki zapisi kontakata mogu biti povezani sa jednim zapisom naloga koristeći jednovrednu navigacijsku osobinuparentcustomerid_account.
Mnogi-na-mnoge Mnogi zapisi mogu biti povezani sa mnogim zapisima. Svaka bezbednosna uloga (uloga) može da sadrži reference na definiciju sistemuser-a.
Obe ove tabele imaju svojstvo systemuserroles_associationnavigacije u vrednosti kolekcije.

Korišćenje jednovrednih svojstava navigacije

Za postojeće zapise na mnogim stranama odnosa jedan-na-više ili više-na-jedan, možete povezati zapis postavljanjem Uri reference na drugi zapis. Najlakši i najčešći način da to uradite je da dodate napomenu @odata.bind na ime jednovredne navigacione osobine, a zatim podesite vrednost kao Uri na drugi zapis u zahtevu PATCH .

Povežite se sa jednovrednom navigacionom osobinom

Na primer, da povežete zapis kontakta sa nalogom koristeći jednovrednu navigacijsku parentcustomerid_account osobinu:

Zahtev:

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

Odgovor:

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

Kao što je opisano u Pridružite redove tabele na kreiranju, novi zapisi se takođe mogu povezati sa postojećim zapisima na isti način.

Prekini vezu sa jednovrednom navigacionom osobinom

Ako želite da odvojite, možete jednostavno podesiti vrednost na null.

Zahtev:

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
}

Odgovor:

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

Kada se razdvajate na ovaj način, ne morate da uključite napomenu @odata.bind . Možete jednostavno koristiti ime jednovredne navigacione osobine:

Zahtev:

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
}

Odgovor:

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

Više informacija: Osnovno ažuriranje

Druge metode

Postoje i drugi načini da se postignu isti rezultati koji su prethodno opisani sa jednovrednim navigacionim svojstvima.

Možete koristiti sledeći PUT zahtev da podesite vrednost parentcustomerid_account jednovredne navigacione osobine:

Zahtev:

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

Odgovor:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Belešku

beleške: Morate koristiti apsolutni URL kada podešavate vrednost za @odata.id.

Da biste uklonili referencu, možete koristiti i ovaj DELETE zahtev:

Zahtev:

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

Odgovor:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Korišćenje svojstava navigaцije sa vrednošću kolekцije

Sa OData-om, obe strane odnosa mnogih-na-više imaju navigacione osobine u vrednosti kolekcije. Za odnose jedan-na-više i više-na-jedan, tabela jedan - 'Jedan' strana ima navigacijsku osobinu vrednu kolekcije. Nema razlike u tome kako radite sa bilo kojom od ovih vrsta odnosa dok koristite svojstva navigacije u vrednosti kolekcije. Ovaj odeljak opisuje kako raditi sa svojstvima navigaцije u vrednosti kolekцije sa bilo kojom vrstom odnosa.

Dodajte zapis u kolekciju

Sledeći primer pokazuje kako da dodate zapis kontakta u kolekciju nalogacontact_customer_accounts , koja je deo odnosa jedan-na-više.

Zahtev:

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

Odgovor:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Sledeći primer pokazuje kako da dodate zapis uloge u kolekciju sistemusersystemuserroles_association , što je odnos više-na-mnogo.

Zahtev:

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

Odgovor:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Uklanjanje zapisa iz kolekcije

Sledeći primer pokazuje kako da uklonite zapis kontakta u kolekciji nalogacontact_customer_accounts gde je 00aa00aa-bb11-cc22-dd33-44ee44ee44eevrednost kontakta contactid .

Zahtev:

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

Odgovor:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Sledeći zahtev takođe radi:

Zahtev:

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

Odgovor:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Vidi takođe

Uzorak osnovnih operacija Veb API-ja (C #)
Uzorak osnovnih operacija Veb API-ja (JavaScript na strani klijenta)
Obavljanje operacija pomoću Veb API-ja
Sastavite Http zahteve i greške u rukovanju
Upitni podaci pomoću Veb API-ja
Kreiranje reda tabele pomoću Veb API-ja
Preuzmite red tabele koristeći Veb API
Ažurirajte i izbrišite redove tabele pomoću Veb API-ja
Koristite Veb API funkcije
Koristite Veb API akcije
Izvršite batch operacije koristeći Veb API
Lažno predstavljanje drugog korisnika koristeći Veb API
Izvršite uslovne operacije koristeći Veb API