Compartir por


Asociar e desasociar filas de táboa usando a API web

Pode asociar rexistros individuais nas filas da táboa con outros rexistros usando as relacións que existen entre as definicións da táboa. En OData, as relacións exprésanse como propiedades de navegación.

Pode descubrir que propiedades de navegación existen no documento de servizo $metadata. Vexa Propiedades de navegación da API web. Para as táboas existentes de Dataverse, consulte a Referencia de tipo de entidade da API web, para cada tipo de entidade, consulte as propiedades de navegación de valor único e de colección listadas.

Na seguinte táboa descríbense os tres tipos de relacións entre táboas en Dataverse.

Tipo Descripción Exemplo
Un a moitos Un rexistro pode ter moitos rexistros asociados a el. Un rexistro de conta pode ter moitos rexistros de contacto na propiedade contact_customer_accountsde navegación valorada pola colección.
Moitos a un Moitos rexistros poden ser asociados a un rexistro.

Many-to-One é a imaxe espello dunha relación One-to-Many. Só hai unha relación.
Pódense asociar varios rexistros de contacto a un único rexistro de conta usando a propiedade parentcustomerid_accountde navegación de valor único.
Moitos a moitos Moitos rexistros poden estar asociados a moitos rexistros. Cada rol de seguridade (role) pode incluír referencias á definición dun usuario do sistema.
Ambas as táboas teñen unha systemuserroles_associationpropiedade de navegación valorada pola colección.

Uso de propiedades de navegación dun só valor

Para os rexistros existentes no lado moitos dunha relación un-a-moitos ou moitos-a-un, pode asociar o rexistro establecendo unha referencia Uri ao outro rexistro. O xeito máis sinxelo e común de facelo é engadir a @odata.bind anotación ao nome da propiedade de navegación dun só valor e, a continuación, establecer o valor como Uri ao outro rexistro nunha PATCH solicitude.

Asociar a unha propiedade de navegación dun só valor

Por exemplo, para asociar un rexistro de contacto a unha conta usando a propiedade parentcustomerid_account de navegación de valor único:

Solicitude:

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)

Como se describe en Asociar filas de táboa na creación, os novos rexistros tamén se poden asociar aos rexistros existentes do mesmo xeito.

Desasociarse cunha propiedade de navegación dun só valor

Se queres desasociar, simplemente podes establecer o valor como nulo.

Solicitude:

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)

Ao desasociar deste xeito, non é necesario incluír a @odata.bind anotación. Pode simplemente usar o nome da propiedade de navegación de valor único:

Solicitude:

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áis información: Actualización básica

Outros métodos

Hai outras formas de conseguir os mesmos resultados descritos anteriormente coas propiedades de navegación dun só valor.

Pode usar a seguinte PUT solicitude para establecer o valor da propiedade parentcustomerid_account de navegación de valor único:

Solicitude:

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

Nota: Debe usar un URL absoluto ao establecer o valor de @odata.id.

Para eliminar a referencia, tamén podes usar esta DELETE solicitude:

Solicitude:

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

Uso de propiedades de navegación con valor de colección

Con OData, ambos os lados dunha relación moitos-a-moitos teñen propiedades de navegación valoradas pola colección. Para as relacións un-a-moitos e moitos-a-un, a táboa do lado "Un" ten unha propiedade de navegación valorada pola colección. Non hai diferenza de como traballar con ningún destes tipos de relacións ao usar propiedades de navegación con valor de colección. Esta sección describe como traballar con propiedades de navegación con valor de colección con calquera tipo de relación.

Engadir un rexistro a unha colección

O seguinte exemplo móstrase como engadir un rexistro de contacto á colección de contascontact_customer_accounts , que forma parte dunha relación un-a-moitos.

Solicitude:

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

O seguinte exemplo móstrase como engadir un rexistro de rol á colección systemusersystemuserroles_association , que é unha relación de moitos a moitos.

Solicitude:

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

Eliminar un rexistro dunha colección

O exemplo seguinte móstrase como eliminar un rexistro de contacto da colección de contascontact_customer_accounts onde está 00aa00aa-bb11-cc22-dd33-44ee44ee44eeo valor de contactocontactid.

Solicitude:

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

Tamén funciona a seguinte solicitude:

Solicitude:

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

Véxase tamén

Exemplo de operacións básicas da API web (C#)
Exemplo de operacións básicas da API web (JavaScript do lado do cliente)
Realizar operacións usando a API Web
Composición de solicitudes HTTP e xestionar erros
Consulta datos usando a API Web
Crear unha fila de táboa usando a API web
Recuperar unha fila de táboa usando a API web
Actualizar e eliminar filas de táboa usando a API web
Usar funcións da API web
Use accións da API web
Executar operacións por lotes usando a API web
Suplantar a outro usuario usando a API web
Realizar operacións condicionais usando a API web