Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para controlar quais dados são retornados de registros de tabela relacionados, use a opção $expandde consulta com propriedades de navegação.
- Você pode incluir até 15
$expandopções em uma consulta. Cada$expandopção cria uma junção que pode afetar o desempenho. - Consultas que expandem propriedades de navegação com valor de coleção podem retornar dados armazenados em cache para essas propriedades que não refletem alterações recentes. É recomendável usar o cabeçalho
If-None-Matchcom valornullpara sobrepor o cache do navegador. Saiba mais sobre como usar cabeçalhos HTTP para obter mais detalhes.
A tabela a seguir descreve as opções de consulta que você pode aplicar em determinadas $expand opções:
| Opção | Description | Mais informações |
|---|---|---|
$select |
Selecione quais propriedades são retornadas. | Selecionar colunas |
$filter |
Para propriedades de navegação com valor de coleção, limite os registros retornados. | Filtrar linhas |
$orderby |
Para propriedades de navegação com valor de coleção, controle a ordem em que os registros são retornados. Não há suporte para $expand aninhado. |
$expand aninhadas em propriedades de navegação com valor de coleção |
$top |
Para propriedades de navegação com valor de coleção, limite o número de registros retornados. Não há suporte para $expand aninhado. |
$expand aninhadas em propriedades de navegação com valor de coleção |
$expand |
Expanda as propriedades de navegação no conjunto de entidades relacionadas. Usar $expand em um $expand é chamado de aninhado $expand. |
Expansão aninhada de propriedades de navegação com valor único e Expansão aninhada de $expand em propriedades de navegação com valor de coleção |
Essas opções são um subconjunto das opções de consulta descritas nas Opções de Expansão do OData Versão 4.0 1: Protocolo Mais Errata 02 11.2.4.2.1. As opções$skip, $count$searche $levels não têm suporte para a API Web do Dataverse.
Use essas opções adicionando-as $expand em parênteses após o nome da propriedade de navegação. Separe cada opção com um ponto-e-vírgula (;).
Por exemplo, a seguinte consulta:
Solicita a
account.namepropriedadeIngressa na
AccountTaskspropriedade de navegação com valor de coleção solicitando:- A propriedade
task.subject - Onde a
task.subjectstring contém "Task" - Ordenado pela
task.createdondata, decrescente
- A propriedade
/accounts?$select=name&$expand=Account_Tasks($select=subject;$filter=contains(subject,'Task');$orderby=createdon desc)
Limitar colunas com $select
Assim como acontece com qualquer consulta, sempre limite as colunas retornadas usando $select quando você usa $expand. Por exemplo, a solicitação a seguir retorna os valores contact.fullname e task.subject nos resultados expandidos do tipo de entidade account.
Pedir:
GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid($select=fullname),Account_Tasks($select=subject)
Prefer: odata.maxpagesize=1
If-None-Match: null
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Resposta:
HTTP/1.1 200 OK
OData-Version: 4.0
Preference-Applied: odata.maxpagesize=1
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid(fullname),Account_Tasks(subject))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd"
},
"Account_Tasks": [
{
"@odata.etag": "W/\"80649460\"",
"subject": "Task 1 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "f68393c1-34cb-ed11-b597-000d3a993550"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject"
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name&$expand=primarycontactid($select=fullname),Account_Tasks($select=subject)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Diferenças nos tipos de propriedade de navegação
Importante
Lembre-se de que há dois tipos de propriedades de navegação. Saiba mais sobre as propriedades de navegação da API Web
As propriedades de navegação com valor único correspondem a atributos de pesquisa que dão suporte a relações muitos para um e permitem definir uma referência a outro registro.
As propriedades de navegação com valor de coleção correspondem a relações um para muitos ou muitos para muitos.
Expandir uma propriedade de navegação com valor de coleção pode tornar o tamanho da resposta grande de maneiras difíceis de prever. É importante que você inclua limites para controlar a quantidade de dados retornada. Você pode limitar a quantidade de registros utilizando técnicas de paginação. Saiba mais sobre os resultados da paginação
Há uma diferença significativa na forma como a paginação é aplicada a opções de $expand aninhadas nas propriedades de navegação que têm valor de coleção. Saiba mais sobre como expandir as propriedades de navegação com valor de coleção
Expandir propriedades de navegação com valor único
O exemplo a seguir demonstra como recuperar registros de contato, incluindo o contato primário e o usuário que criou os registros.
Pedir:
GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid($select=contactid,fullname),createdby($select=fullname)
Prefer: odata.maxpagesize=2
If-None-Match: null
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Resposta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid(contactid,fullname),createdby(fullname))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"fullname": "Susanna Stubberod (sample)"
},
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
},
{
"@odata.etag": "W/\"80649580\"",
"name": "Adventure Works (sample)",
"accountid": "7a914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"contactid": "72bf4d48-34cb-ed11-b596-0022481d68cd",
"fullname": "Nancy Anderson (sample)"
},
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name%0A&$expand=primarycontactid($select=contactid,fullname),createdby($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
A createdby propriedade de navegação com valor único retorna uma instância do systemuser EntityType. Ambas as propriedades systemuserid e ownerid são retornadas. Isso ocorre porque systemuser herda do EntityType principal e compartilha a chave primária com o owneridEntityType da equipe por meio dessa herança.
No entanto, a tabela Usuário (SystemUser) tem a chave primária de SystemUserId. Ambas as propriedades systemuserid e ownerid têm o mesmo valor.
Saiba mais sobre a herança EntityType
Referências de retorno
Em vez de retornar dados, você também pode retornar referências ou links para os registros relacionados expandindo a propriedade de navegação com valor único com a opção /$ref . O exemplo a seguir retorna objetos JSON com uma @odata.id propriedade que tem uma URL para cada contato primário.
Pedir:
GET [Organization URI]/api/data/v9.2/accounts?$select=name
&$expand=primarycontactid/$ref
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Resposta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,primarycontactid,primarycontactid/$ref())",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"_primarycontactid_value": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"@odata.id": "[Organization URI]/api/data/v9.2/contacts(70bf4d48-34cb-ed11-b596-0022481d68cd)"
}
},
{
"@odata.etag": "W/\"80649580\"",
"name": "Adventure Works (sample)",
"_primarycontactid_value": "72bf4d48-34cb-ed11-b596-0022481d68cd",
"accountid": "7a914942-34cb-ed11-b596-0022481d68cd",
"primarycontactid": {
"@odata.id": "[Organization URI]/api/data/v9.2/contacts(72bf4d48-34cb-ed11-b596-0022481d68cd)"
}
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name%0A&$expand=primarycontactid/$ref&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Você só pode usar a opção /$ref com propriedades de navegação de valor único. Se você usá-la com uma propriedade de navegação com valor de coleção, receberá o seguinte erro:
{
"error": {
"code": "0x80060888",
"message": "Expand with $ref is only supported on lookup type navigation property."
}
}
Expansão aninhada de propriedades de navegação com valor único
Você pode expandir propriedades de navegação de valor único para vários níveis aninhando a opção $expand dentro de outra opção $expand.
A consulta a seguir retorna task registros e expande os contact relacionados, os account relacionados ao contact e o systemuser que criou o registro account:
Pedir:
GET [Organization URI]/api/data/v9.2/tasks?$select=subject
&$expand=regardingobjectid_contact_task($select=fullname;
$expand=parentcustomerid_account($select=name;
$expand=createdby($select=fullname)))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.maxpagesize=2
Resposta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=2
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#tasks(subject,regardingobjectid_contact_task(fullname,parentcustomerid_account(name,createdby(fullname))))",
"value": [
{
"@odata.etag": "W/\"80730855\"",
"subject": "Task 1 for Susanna Stubberod",
"activityid": "e9a8c72c-dbcc-ed11-b597-000d3a993550",
"regardingobjectid_contact_task": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"parentcustomerid_account": {
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
}
},
{
"@odata.etag": "W/\"80730861\"",
"subject": "Task 2 for Susanna Stubberod",
"activityid": "c206f534-dbcc-ed11-b597-000d3a993550",
"regardingobjectid_contact_task": {
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"parentcustomerid_account": {
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"createdby": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
}
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/tasks?$select=subject&$expand=regardingobjectid_contact_task($select=fullname;$expand=parentcustomerid_account($select=name;$expand=createdby($select=fullname)))&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253cactivityid%2520last%253d%2522%257bC206F534-DBCC-ED11-B597-000D3A993550%257d%2522%2520first%253d%2522%257bE9A8C72C-DBCC-ED11-B597-000D3A993550%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Expandir propriedades de navegação com valor de coleção
Há algumas diferenças importantes na resposta que dependem se você usa aninhado $expand com uma propriedade de navegação com valor de coleção em qualquer lugar em sua consulta.
| $expand aninhado | $expand único | |
|---|---|---|
| Paginação | Paginação em linhas expandidas. | Paginação somente no recurso EntitySet.
<property name>@odata.nextLink As URLs para linhas expandidas não incluem informações de paginação. |
$top ou $orderby com suporte |
Não | Yes |
| Relações N:N suportadas | Não. Veja Expansão Aninhada com Relações N:N | Yes |
$expand único nas propriedades de navegação com valor de coleção
Se você usar apenas um nível $expand único, nenhuma paginação será aplicada às linhas expandidas. Se você incluir o cabeçalho da Prefer: odata.maxpagesize solicitação, a paginação será aplicada somente ao recurso EntitySet da consulta.
Cada propriedade de navegação de coleção de valores expandida retorna um <property>@odata.nextLink URL que não contém informações de paginação. É uma URL que representa a coleção filtrada para a relação com as opções de consulta acrescentadas. Você pode usar essa URL para enviar uma solicitação separada GET e ela retorna as mesmas linhas que foram retornadas em sua solicitação original. Você pode aplicar a paginação a essa solicitação.
Como nenhuma paginação é aplicada aos registros expandidos, até 5.000 registros de tabela relacionados podem ser retornados para cada propriedade de navegação com valor de coleção expandido. Dependendo dos dados e da consulta, pode ser muitos dados. Retornar muitos dados pode afetar o desempenho e, possivelmente, fazer com que sua solicitação tenha um tempo limite. Tenha cuidado com as consultas que você redigir. Você pode usar $top, $filtere $orderby opções para controlar o número total de registros retornados.
O exemplo a seguir inclui uma única expansão dos Account_Tasks e contact_customer_accounts ao recuperar os registros de conta. O Prefer: odata.maxpagesize=1 cabeçalho da solicitação garante que apenas um registro de conta seja retornado na primeira página.
Pedir:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,accountid
&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname)
Prefer: odata.maxpagesize=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Resposta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=1
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,accountid,Account_Tasks(subject),contact_customer_accounts(fullname))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"Account_Tasks": [
{
"@odata.etag": "W/\"80730894\"",
"subject": "Task 1 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "be9f6557-e2cc-ed11-b597-000d3a993550"
},
{
"@odata.etag": "W/\"80730903\"",
"subject": "Task 2 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "605dbd65-e2cc-ed11-b597-000d3a993550"
},
{
"@odata.etag": "W/\"80730909\"",
"subject": "Task 3 for Litware",
"_regardingobjectid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"activityid": "a718856c-e2cc-ed11-b597-000d3a993550"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject",
"contact_customer_accounts": [
{
"@odata.etag": "W/\"80648695\"",
"fullname": "Susanna Stubberod (sample)",
"_parentcustomerid_value": "78914942-34cb-ed11-b596-0022481d68cd",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd"
}
],
"contact_customer_accounts@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/contact_customer_accounts?$select=fullname"
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name,accountid&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b7A914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520first%253d%2522%257b78914942-34CB-ED11-B596-0022481D68CD%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Compare esta resposta com o exemplo a seguir, que inclui um $expand aninhado. Role horizontalmente a resposta de exemplo para ver que apenas a URL @odata.nextLink do resultado da conta contém informações de paginação.
$expand aninhadas em propriedades de navegação com valor de coleção
Se você usar um $expand aninhado em qualquer lugar da consulta e incluir o cabeçalho de solicitação Prefer: odata.maxpagesize, a paginação será aplicada em cada coleção expandida.
Cada propriedade de navegação com valor de coleção expandida retorna uma <property>@odata.nextLink URL que inclui informações de paginação. Você pode usar essa URL para enviar uma solicitação separada GET e ela retornará o próximo conjunto de registros que não foram incluídos em sua solicitação original.
Você não pode usar as opções $top ou $orderby para limitar o número total de registros retornados com um $expand aninhado. O seguinte erro será retornado se você usar estas opções:
{
"error": {
"code": "0x80060888",
"message": "Only $select and $filter clause can be provided while doing $expand on many-to-one relationship or nested one-to-many relationship."
}
}
O exemplo a seguir baseia-se no exemplo anterior e usa os mesmos dados. A única diferença é a adição na URL deste elemento $expand aninhado em uma propriedade de navegação de valor único para retornar o proprietário do contato: ;$expand=owninguser($select=fullname).
Pedir:
GET [Organization URI]/api/data/v9.2/accounts?$select=name,accountid
&$expand=Account_Tasks($select=subject),contact_customer_accounts($select=fullname;
$expand=owninguser($select=fullname))
Prefer: odata.maxpagesize=1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Resposta:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: odata.maxpagesize=1
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,accountid,Account_Tasks(subject),contact_customer_accounts(fullname,owninguser(fullname)))",
"value": [
{
"@odata.etag": "W/\"80649578\"",
"name": "Litware, Inc. (sample)",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd",
"Account_Tasks": [
{
"subject": "Task 1 for Litware",
"activityid": "be9f6557-e2cc-ed11-b597-000d3a993550"
}
],
"Account_Tasks@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/Account_Tasks?$select=subject,description&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253cactivityid%2520last%253d%2522%257bbe9f6557-e2cc-ed11-b597-000d3a993550%257d%2522%2520first%253d%2522%257bbe9f6557-e2cc-ed11-b597-000d3a993550%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E",
"contact_customer_accounts": [
{
"fullname": "Susanna Stubberod (sample)",
"contactid": "70bf4d48-34cb-ed11-b596-0022481d68cd",
"owninguser": {
"fullname": "System Administrator",
"systemuserid": "4026be43-6b69-e111-8f65-78e7d1620f5e",
"ownerid": "4026be43-6b69-e111-8f65-78e7d1620f5e"
}
}
],
"contact_customer_accounts@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts(78914942-34cb-ed11-b596-0022481d68cd)/contact_customer_accounts?$select=fullname&$expand=owninguser($select=fullname)&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253ccontactid%2520last%253d%2522%257b70bf4d48-34cb-ed11-b596-0022481d68cd%257d%2522%2520first%253d%2522%257b70bf4d48-34cb-ed11-b596-0022481d68cd%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
],
"@odata.nextLink": "[Organization URI]/api/data/v9.2/accounts?$select=name,accountid&$expand=Account_Tasks($select=subject,description),contact_customer_accounts($select=fullname;$expand=owninguser($select=fullname))&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%2520countOfRecords%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b78914942-34cb-ed11-b596-0022481d68cd%257d%2522%2520first%253d%2522%257b78914942-34cb-ed11-b596-0022481d68cd%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
Compare essa resposta com o exemplo anterior, que não usa um elemento aninhado $expand. Nesta resposta:
- O
Prefer: odata.maxpagesize=1cabeçalho da solicitação é aplicado aostaskregistros retornados comAccount_Tasks. - Apenas uma tarefa é retornada em vez de três.
- A
Account_Tasks@odata.nextLinkURL retorna as duas próximas tarefas. - Role a resposta de exemplo horizontalmente para ver que as URLs
Account_Tasks@odata.nextLink,contact_customer_accounts@odata.nextLinke@odata.nextLinkcontêm informações de paginação.
$expand aninhados com relações N:N
Quando uma propriedade de navegação com valor de coleção representa uma relação N:N, você receberá o seguinte erro ao usar instruções aninhadas $expand :
{
"error": {
"code": "0x80060888",
"message": "The navigation property '<NAME>' cannot be expanded. Only many-to-one relationships are supported for nested expansion."
}
}
Por exemplo, usando a tabela Dynamics Lead, que tem uma contactleads_association relação N:N com a tabela de contatos, a consulta a seguir retorna o erro porque inclui ;$expand=createdby.
GET [Organization URI]/contacts?$select=fullname$expand=contactleads_association($select=fullname;$expand=createdby)
Para evitar esse erro, você pode construir a consulta usando FetchXml. Por exemplo:
<fetch>
<entity name='contact'>
<attribute name='fullname' />
<link-entity name='contactleads'
from='contactid'
to='contactid'
alias='cl'>
<link-entity name='lead'
from='leadid'
to='leadid'
alias='lead'>
<attribute name='fullname' />
<link-entity name='systemuser'
from='systemuserid'
to='createdby'
alias='systemuser'>
<attribute name='fullname' />
</link-entity>
</link-entity>
</link-entity>
</entity>
</fetch>
Saiba mais sobre como unir tabelas usando relações muitos para muitos com FetchXml
Próximas etapas
Saiba como ordenar linhas.