Partilhar via


Exemplo de pesquisa de várias tabelas da API Web (PowerShell)

Este exemplo do PowerShell demonstra como criar e usar colunas de pesquisa de várias tabelas, às vezes chamadas de pesquisas polimórficas, usando a API Web do Dataverse.

Este exemplo demonstra as operações descritas em Usar colunas de pesquisa de várias tabelas e usa as funções auxiliares do PowerShell da API Web do Dataverse para gerenciar a autenticação e fornecer funções reutilizáveis para executar operações comuns. O exemplo faz referência a esses scripts usando dot sourcing.

. $PSScriptRoot\..\Core.ps1
. $PSScriptRoot\..\TableOperations.ps1
. $PSScriptRoot\..\CommonFunctions.ps1
. $PSScriptRoot\..\MetadataOperations.ps1

Observação

Este exemplo deve funcionar com Windows, Linux e macOS, mas o autor o testou apenas em Windows.

Pré-requisitos

Antes de executar este exemplo, você deve ler estes artigos que explicam os conceitos e padrões usados por estes exemplos:

Esses artigos têm os mesmos pré-requisitos.

Instalar ou verificar se os seguintes estão instalados

Verifique a instalação

  1. Abra Visual Studio Code.

  2. No menu Terminal, selecione Novo Terminal.

  3. No painel de navegação Visual Studio Code, selecione o ícone para a extensão do PowerShell.

  4. Copie e cole o seguinte script na janela do terminal Visual Studio Code:

    Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString()
    Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
    
  5. Pressione Enter. O resultado deve ser assim:

    PowerShell Version: 7.4.0
    PowerShell Az version: 11.1.0
    

Se você não vir resultados como este, instale ou atualize os pré-requisitos.

Você também precisará

  • Uma conta de usuário válida para um ambiente do Dataverse
  • A URL para o ambiente do Dataverse ao qual você deseja se conectar. Veja Exibir recursos do desenvolvedor para saber como encontrá-lo. Parece algo assim: https://yourorg.crm.dynamics.com/, onde yourorg.crm é diferente.
  • Compreensão básica da linguagem de script do PowerShell

Como executar este exemplo

  1. Clone ou baixe o repositório PowerApps-Samples .

  2. Abra o arquivo /dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1 usando Visual Studio Code.

  3. Edite a seguinte linha para usar a URL do ambiente ao qual você deseja se conectar:

    Connect 'https://yourorg.crm.dynamics.com/' # change this

  4. (Opcional) Defina a $deleteCreatedRecords variável para $false se você não quiser excluir os registros que este exemplo cria.

  5. Pressione F5 para executar o exemplo.

  6. Na primeira vez que você executar o exemplo, uma janela do navegador será aberta. Na janela do navegador, insira ou selecione as credenciais que você deseja usar para autenticar.

Para se conectar como um usuário diferente, execute o comandoDisconnect-AzAccount e tente novamente.

Code

O código deste exemplo está em: PowerApps-Samples/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1

Demonstra

Este exemplo tem nove seções:

Seção 0: Criar Publicador e Solução

Operações:

  1. Consulte um publicador existente com o examplepublisher nome exclusivo enviando uma solicitação GET para /publishers.
  2. Crie o publicador se ele ainda não existir enviando uma solicitação POST para /publishers.
  3. Consultar uma solução existente nomeada polymorphiclookupexamplesolution enviando uma solicitação GET para /solutions.
  4. Crie a solução se ela ainda não existir enviando uma solicitação POST para /solutions.

Observação

Você pode exportar todos os componentes da solução criados neste exemplo associando-os à solução. Para operações sem uma mensagem nomeada, configure o cabeçalho de solicitação MSCRM.SolutionUniqueName para o nome único da solução, a fim de criar essa associação. Prefixe todos os nomes de componentes da solução usando o prefixo de personalização do publicador.

Seção 1: Criar tabelas referenciadas

Operações:

  1. Crie uma sample_Book tabela enviando uma POST solicitação para /EntityDefinitions, se ela ainda não existir. Esta tabela inclui um atributo primário sample_name e uma coluna de cadeia sample_CallNumber de caracteres.
  2. Crie uma sample_Audio tabela enviando uma POST solicitação para /EntityDefinitions, se ela ainda não existir. Esta tabela inclui um atributo primário sample_name e uma coluna de cadeia sample_AudioFormat de caracteres.
  3. Crie uma sample_Video tabela enviando uma POST solicitação para /EntityDefinitions, se ela ainda não existir. Esta tabela inclui um atributo primário sample_name e uma coluna de cadeia sample_VideoFormat de caracteres.

Essas três tabelas servem como tabelas referenciadas para as quais a coluna de pesquisa polimórfica pode apontar.

Seção 2: Criar Tabela de Referência

Operações: crie uma sample_Media tabela enviando uma POST solicitação para /EntityDefinitions, se ela ainda não existir. Esta tabela inclui um atributo primário sample_name e hospeda a coluna de pesquisa polimórfica.

A sample_Media tabela serve como a tabela de referência – a tabela que contém a coluna de pesquisa de várias tabelas.

Seção 3: Criar atributo de pesquisa polimórfica

Operações:

  1. Crie uma coluna de pesquisa na tabela sample_MediaPolymorphicLookup juntamente com relações um para muitos para cada uma das três tabelas referenciadas (sample_Media, sample_Book e sample_Audio) usando a ação sample_Video. Essa única ação cria o atributo e todas as três relações ao mesmo tempo.
  2. Recupere o ReferencingEntityNavigationPropertyName para cada uma das três relações (sample_media_sample_book, sample_media_sample_audio, sample_media_sample_video) enviando solicitações GET para /RelationshipDefinitions. Você precisa desses nomes de propriedade de navegação para associar registros usando a sintaxe @odata.bind.

Seção 4: Criar registros de dados de exemplo

Operações:

  1. Recupere o EntitySetName para cada uma das quatro tabelas enviando GET solicitações para /EntityDefinitions.
  2. Crie dois sample_Book registros enviando POST solicitações para sample_books.
  3. Crie dois sample_Audio registros enviando POST solicitações para sample_audios.
  4. Crie dois sample_Video registros enviando POST solicitações para sample_videos.
  5. Crie quatro sample_Media registros enviando POST solicitações para sample_medias. Cada registro de mídia usa o nome da propriedade de navegação recuperado na Seção 3 e a sintaxe @odata.bind para definir que a pesquisa polimórfica aponte para um registro de uma das três tabelas referenciadas.

Seção 5: Recuperar dados de exemplo

Operações:

  1. Consultar todos os registros sample_Media, selecionando as colunas sample_name e _sample_mediapolymorphiclookup_value enviando uma solicitação GET para /sample_medias. A consulta usa as anotações OData Microsoft.Dynamics.CRM.lookuplogicalname e OData.Community.Display.V1.FormattedValue para exibir o tipo de entidade e o nome formatado de cada valor de pesquisa.
  2. Filtrar sample_Media registros em que a pesquisa polimórfica aponta para um registro específico sample_Book enviando uma solicitação GET para /sample_medias com um $filter apropriado.
  3. Filtrar sample_Media registros em que a pesquisa polimórfica aponta para um registro específico sample_Audio enviando uma solicitação GET para /sample_medias com um $filter apropriado.

Seção 6: Exportar solução gerenciada

Operações: exporte a solução que você criou na Seção 0: Criar Publicador e Solução como um pacote de solução gerenciada usando a ação ExportSolution. Salve o arquivo exportado .zip localmente para uso na Seção 8.

Seção 7: Excluir tabelas de exemplo e solução

Operações:

  1. Exclua a sample_Media tabela enviando uma DELETE solicitação para /EntityDefinitions. Você deve excluir a tabela de referência antes das tabelas referenciadas.
  2. Exclua as tabelas sample_Book, sample_Audio e sample_Video enviando solicitações DELETE para /EntityDefinitions.
  3. Consulte a solução não gerenciada enviando uma solicitação GET para /solutions filtrada por nome exclusivo.
  4. Exclua a solução não gerenciada enviando uma solicitação DELETE para /solutions(<solutionid>).

Seção 8: Importar e excluir solução gerenciada

Operações:

  1. Importe a solução gerenciada exportada na Seção 6: Exportar solução gerenciada usando a ação ImportSolution.
  2. Consulte a solução importada enviando uma solicitação GET para /solutions filtrada por nome exclusivo.
  3. Exclua a solução gerenciada importada enviando uma solicitação DELETE para /solutions(<solutionid>).

Limpeza

Por padrão, esse exemplo exclui todos os registros que ele cria. Se você quiser exibir os registros criados após a conclusão do exemplo, altere a $deleteCreatedRecords variável para $false. Em seguida, você será solicitado a decidir se deseja excluir os registros.

Consulte também

Utilizar colunas de pesquisa em várias tabelas
Utilizar a API Web do Dataverse
Usar a API Web com definições de tabela
Exemplos de API Web
Exemplo de operações de esquema de tabela da API Web (PowerShell)