Comparteix via


Associar i desassociar files de taula mitjançant l'API web

Podeu associar registres individuals de files de taula amb altres registres mitjançant les relacions que existeixen entre les definicions de taula. A OData, les relacions s'expressen com a propietats de navegació.

Podeu descobrir quines propietats de navegació existeixen al document de servei $metadata. Vegeu Propietats de navegació de l'API web. Per a taules Dataverse existents, vegeu la Web API EntityType Reference

, per a cada tipus d'entitat, vegeu les propietats de navegació d'un sol valor i les de col·lecció llistades.

A la taula següent es descriuen els tres tipus de relacions entre les taules del Dataverse.

Tipus Descripció Exemple
Un a molts Un registre pot tenir molts registres associats. Un registre de compte pot tenir molts registres de contacte a la contact_customer_accountspropietat de navegació amb valor de col·lecció.
Diversos a un Es poden associar molts registres amb un registre.

Many-to-One és la imatge especular d'una relació One-to-Many. Només hi ha una relació.
Es poden associar diversos registres de contacte a un sol registre de compte mitjançant la parentcustomerid_account sol valor.
De diversos a diversos Molts registres es poden associar amb molts registres. Cada funció de seguretat (funció) pot incloure referències a la definició d'un usuari del sistema.
Ambdues taules tenen una systemuserroles_associationpropietat de navegació amb valor de col·lecció.

Ús de propietats de navegació d'un sol valor

Per als registres existents al costat de diversos d'una relació d'un a diversos o de diversos a un, podeu associar el registre definint una referència d'Uri a l'altre registre. La manera més senzilla i comuna de fer-ho és afegir l'anotació @odata.bind al nom de la propietat de navegació d'un sol valor i després establir el valor com a Uri a l'altre registre d'una PATCH sol·licitud.

Associar amb una propietat de navegació d'un sol valor

Per exemple, per associar un registre de contacte a un registre de compte utilitzant la propietat de navegació d'un parentcustomerid_account sol valor:

Demanar:

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

Resposta:

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

Tal com s'ha descrit a les files de la taula Associate a create, també pots associar nous registres amb registres existents de la mateixa manera.

Desassociació utilitzant una propietat de navegació d'un sol valor

Per dissociar, posa el valor a nul.

Demanar:

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
}

Resposta:

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

Quan et desassociïs utilitzant aquest mètode, no incloguis l'anotació @odata.bind . Utilitza el nom de la propietat de navegació d'un sol valor:

Demanar:

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
}

Resposta:

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

Més informació: Actualització bàsica

Altres mètodes

Pots utilitzar altres mètodes per aconseguir els mateixos resultats descrits anteriorment amb propietats de navegació d'un sol valor.

Utilitza la següent PUT petició per establir el valor de la parentcustomerid_account propietat de navegació d'un sol valor:

Demanar:

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

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Nota

Has d'utilitzar una URL absoluta quan estableixes el valor per @odata.ida .

Per eliminar la referència, utilitza aquesta DELETE petició:

Demanar:

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

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Ús de propietats de navegació amb valor de col·lecció

Amb OData, ambdós costats d'una relació de diversos a diversos tenen propietats de navegació amb valor de col·lecció. Per a relacions d'un a molts i de molts a un, la taula del costat 'Un' té una propietat de navegació valorada per col·lecció. No hi ha diferència en com treballes amb cap d'aquests tipus de relacions quan utilitzes propietats de navegació valorades per col·lecció. Aquesta secció descriu com treballar amb propietats de navegació de valors de col·lecció per a qualsevol tipus de relació.

Afegir un registre a una col·lecció

L'exemple següent mostra com afegir un registre de contacte a la col·lecció de comptescontact_customer_accounts , que forma part d'una relació d'un a diversos.

Demanar:

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

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

L'exemple següent mostra com afegir un registre de funció a la col·lecció systemusersystemuserroles_association , que és una relació de diversos a diversos.

Demanar:

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

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Suprimir un registre d'una col·lecció

L'exemple següent mostra com suprimir un registre de contacte a la col·lecció de comptescontact_customer_accounts on és contactidel valor de contacte 00aa00aa-bb11-cc22-dd33-44ee44ee44ee .

Demanar:

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

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

També funciona la següent sol·licitud:

Demanar:

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

Resposta:

HTTP/1.1 204 NoContent
OData-Version: 4.0

Vegeu també

Exemple d'operacions bàsiques de l'API web (C#)
Exemple d'operacions bàsiques de l'API web (JavaScript del client)
Realitzar operacions mitjançant l'API web
Redacció de sol·licituds HTTP i gestió d'errors
Consulta de dades mitjançant l'API web
Crear una fila de taula mitjançant l'API web
Recuperar una fila de taula mitjançant l'API web
Actualitzar i suprimir files de taula mitjançant l'API web
Utilitzar funcions de l'API web
Utilitzar accions de l'API web
Executar operacions per lots mitjançant l'API web
Suplantar la identitat d'un altre usuari mitjançant l'API web
Realitzar operacions condicionals mitjançant l'API web