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 EitiTipe 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 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 parentcustomerid_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 biste povezali zapis kontakta sa zapisom računa 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 prilikom kreiranja, takođe možete povezati nove zapise sa postojećim zapisima na isti način.

Razdvajanje pomoću jednovredne navigacione osobine

Da biste prekinuli vezu, podesite 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 odvojite vezu pomoću ove metode, nemojte uključivati napomenu @odata.bind . Koristite 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

Možete koristiti druge metode da biste postigli iste rezultate koji su prethodno opisani sa jednovrednim svojstvima navigacije.

Koristite 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

Morate koristiti apsolutni URL kada podesite vrednost za @odata.id.

Da biste uklonili referencu, koristite 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 na strani 'Jedan' ima svojstvo navigacije u vrednosti kolekcije. Nema razlike u načinu na koji 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 za bilo koju vrstu 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 contactidvrednost kontakta 00aa00aa-bb11-cc22-dd33-44ee44ee44ee .

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