Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode associar registros individuais em linhas de tabela a outros registros usando relações que existem entre as definições de tabela. No OData, as relações são expressas como propriedades de navegação.
Você pode descobrir quais propriedades de navegação existem no documento de serviço $metadata. Consulte Propriedades de navegação da API Web. Para tabelas do Dataverse existentes, consulte a Referência EntityType da API Web, para cada tipo de entidade, consulte as propriedades de navegação listadas de valor único e valor de coleção.
A tabela a seguir descreve os três tipos de relações entre tabelas no Dataverse.
| Tipo | Description | Example |
|---|---|---|
| Um para Muitos | Um registro pode ter muitos registros associados a ele. | Um registo de conta pode ter muitos registos de contacto na contact_customer_accountspropriedade de navegação com valor de coleção. |
| Muitos para Um | Muitos registros podem ser associados a um registro. Muitos-para-Um é a imagem espelhada de uma relação Um-para-Muitos. Há apenas uma relação. |
Vários registros de contato podem ser associados a um único registro de conta usando a parentcustomerid_accountpropriedade de navegação de valor único. |
| Muitos para Muitos | Muitos registros podem ser associados a muitos registros. | Cada função de segurança (função) pode incluir referências à definição de um usuário do sistema. Ambas as tabelas têm uma systemuserroles_associationpropriedade de navegação baseada em coleção. |
Usando propriedades de navegação de valor único
Para registos existentes no lado muitos de uma relação um para muitos ou muitos para um, pode associar o registo ao definir uma referência de Uri ao outro registo. A forma mais fácil e comum de fazer isto é anexar a anotação @odata.bind ao nome da propriedade de navegação de valor único e, em seguida, definir o valor como o Uri para o outro registo num pedido PATCH.
Associar a uma propriedade de navegação de valor único
Por exemplo, para associar um registro de contato a uma conta usando a parentcustomerid_account propriedade de navegação de valor único:
Pedido:
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)
Conforme descrito em Associar linhas da tabela na criação, novos registros também podem ser associados a registros existentes da mesma maneira.
Desassociar de uma propriedade de navegação de valor único
Se você quiser desassociar, você pode simplesmente definir o valor como nulo.
Pedido:
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 desassociar desta forma, não é necessário incluir a anotação @odata.bind. Você pode simplesmente usar o nome da propriedade de navegação de valor único:
Pedido:
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)
Para obter mais informações: Atualização básica
Outros métodos
Há outras maneiras de obter os mesmos resultados descritos anteriormente com propriedades de navegação de valor único.
Você pode usar a seguinte PUT solicitação para definir o valor da propriedade de navegação de parentcustomerid_account valor único:
Pedido:
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
Observação
Nota: Você deve usar uma URL absoluta ao definir o valor para @odata.id.
Para remover a referência, você também pode usar esta DELETE solicitação:
Pedido:
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
Utilizar propriedades de navegação com valor de coleção
Com OData, ambos os lados de uma relação muitos para muitos têm propriedades de navegação com valor de coleção. Para relações um para muitos e muitos para um, a tabela do lado "Um" tem uma propriedade de navegação com valor de coleção. Não há diferença em como trabalha com qualquer um destes tipos de relações ao usar propriedades de navegação com valor de coleção. Esta secção descreve como trabalhar com propriedades de navegação com valor de coleção com qualquer tipo de relação.
Adicionar um registo a uma coleção
O exemplo a seguir mostra como adicionar um registo de contacto à coleção de contacontact_customer_accounts, que faz parte de uma relação um para muitos.
Pedido:
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 exemplo a seguir mostra como adicionar um registo de função à coleção systemusersystemuserroles_association, que é uma relação muitos para muitos.
Pedido:
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
Remover um registo de uma coleção
O exemplo a seguir mostra como remover um registro de contato para a coleção de contascontact_customer_accounts onde o valor de contato contactid é 00aa00aa-bb11-cc22-dd33-44ee44ee44ee.
Pedido:
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
O seguinte pedido também funciona:
Pedido:
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
Consulte também
Exemplo de operações básicas da API Web (C#)
Exemplo de operações básicas da API Web (JavaScript do lado do cliente)
Executar operações usando a API da Web
Compor solicitações Http e lidar com erros
Consultar dados usando a API da Web
Criar uma linha de tabela usando a API da Web
Recuperar uma linha de tabela usando a API da Web
Atualizar e excluir linhas da tabela usando a API da Web
Usar funções da API da Web
Usar ações da API da Web
Executar operações em lote usando a API da Web
Represente outro usuário usando a API da Web
Executar operações condicionais usando a API da Web