Compartir por


Ejemplo de búsqueda de varias tablas de api web (PowerShell)

En este ejemplo de PowerShell se muestra cómo crear y usar columnas de búsqueda de varias tablas, a veces denominadas búsquedas polimórficas, mediante la API web de Dataverse.

En este ejemplo se muestran las operaciones descritas en Uso de columnas de búsqueda de varias tablas y se usan las funciones auxiliares de PowerShell de Api web de Dataverse para administrar la autenticación y proporcionar funciones reutilizables para realizar operaciones comunes. El ejemplo hace referencia a estos scripts mediante dot sourcing.

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

Nota:

Este ejemplo debe funcionar con Windows, Linux y macOS, pero el autor solo lo probó en Windows.

Prerrequisitos

Antes de ejecutar este ejemplo, debe leer estos artículos que explican los conceptos y patrones utilizados en estos ejemplos:

Estos artículos tienen los mismos requisitos previos.

Instale o verifique que lo siguiente esté instalado

Comprobación de la instalación

  1. Abra Visual Studio Code.

  2. En el menú Terminal, seleccione Nuevo terminal.

  3. En Visual Studio Code panel de navegación, seleccione el icono para la extensión de PowerShell.

  4. Copie y pegue el siguiente script en la ventana de terminal de Visual Studio Code:

    Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString()
    Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).Version
    
  5. Presione ENTRAR. La salida debe ser similar a la siguiente:

    PowerShell Version: 7.4.0
    PowerShell Az version: 11.1.0
    

Si no ve resultados como este, instale o actualice los requisitos previos.

También necesitará

  • Cuenta de usuario válida para un entorno de Dataverse
  • Dirección URL al entorno de Dataverse al que desea conectarse Consulte Ver recursos para desarrolladores para saber cómo encontrarlo. Se parece a esto: https://yourorg.crm.dynamics.com/, donde yourorg.crm es diferente.
  • Comprensión básica de lenguaje de scripting PowerShell

Cómo ejecutar esta muestra

  1. Clonar o descargar el repositorio de ejemplos de PowerApps.

  2. Abra el archivo /dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1 usando Visual Studio Code.

  3. Edite la siguiente línea para usar la dirección URL del entorno al que desea conectarse:

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

  4. (Opcional) Configure la variable $deleteCreatedRecords a $false si no desea eliminar los registros que crea esta muestra.

  5. Presione F5 para ejecutar el ejemplo.

  6. La primera vez que ejecute el ejemplo, se abre una ventana del explorador. En la ventana del navegador, ingrese o seleccione las credenciales que desea usar para autenticarse.

Para conectarse como un usuario diferente, ejecute el Comando Disconnect-AzAccount e inténtelo de nuevo.

Código

El código de este ejemplo está en: PowerApps-Samples/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1

Demostraciones

Este ejemplo tiene nueve secciones:

Sección 0: Crear un editor y una solución

Operaciones:

  1. Para consultar un publicador existente con el examplepublisher nombre único, envíe una GET solicitud a /publishers.
  2. Cree el publicador si aún no existe enviando una POST solicitud a /publishers.
  3. Para consultar una solución existente denominada polymorphiclookupexamplesolution , envíe una GET solicitud a /solutions.
  4. Cree la solución si aún no existe enviando una POST solicitud a /solutions.

Nota:

Puede exportar todos los componentes de la solución creados en este ejemplo asociandolos a la solución. Para las operaciones sin un mensaje con nombre, establezca el encabezado de solicitud MSCRM.SolutionUniqueName en el nombre único de la solución para crear esta asociación. Prefije todos los nombres de los componentes de la solución utilizando el prefijo de personalización del publicador.

Sección 1: Crear tablas a las que se hace referencia

Operaciones:

  1. Cree una sample_Book tabla enviando una POST solicitud a /EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principal sample_name y una columna de sample_CallNumber cadena.
  2. Cree una sample_Audio tabla enviando una POST solicitud a /EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principal sample_name y una columna de sample_AudioFormat cadena.
  3. Cree una sample_Video tabla enviando una POST solicitud a /EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principal sample_name y una columna de sample_VideoFormat cadena.

Estas tres tablas sirven como tablas de referencia, a las que la columna de búsqueda polimórfica puede apuntar.

Sección 2: Crear tabla de referencia

Operaciones: cree una sample_Media tabla enviando una POST solicitud a /EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principal sample_name y hospeda la columna de búsqueda polimórfica.

La sample_Media tabla actúa como tabla de referencia : la tabla que contiene la columna de búsqueda de varias tablas.

Sección 3: Crear atributo de búsqueda polimórfica

Operaciones:

  1. Cree una columna de búsqueda sample_MediaPolymorphicLookup en la tabla sample_Media junto con relaciones de uno a varios para cada una de las tres tablas a las que se hace referencia (sample_Book, sample_Audio, y sample_Video) mediante la acción CreatePolymorphicLookupAttribute. Esta acción única crea el atributo y las tres relaciones a la vez.
  2. Recupere el ReferencingEntityNavigationPropertyName de cada una de las tres relaciones (sample_media_sample_book, sample_media_sample_audio, sample_media_sample_video) enviando solicitudes GET a /RelationshipDefinitions. Necesita estos nombres de propiedad de navegación para asociar registros mediante la sintaxis @odata.bind.

Sección 4: Crear registros de datos de ejemplo

Operaciones:

  1. Recupere el EntitySetName para cada una de las cuatro tablas enviando GET solicitudes a /EntityDefinitions.
  2. Cree dos sample_Book registros enviando POST solicitudes a sample_books.
  3. Cree dos sample_Audio registros enviando POST solicitudes a sample_audios.
  4. Cree dos sample_Video registros enviando POST solicitudes a sample_videos.
  5. Cree cuatro sample_Media registros enviando POST solicitudes a sample_medias. Cada registro multimedia utiliza el nombre de propiedad de navegación obtenido en la sección 3 y la sintaxis @odata.bind para establecer la búsqueda polimórfica que apunta a un registro de una de las tres tablas mencionadas.

Sección 5: Recuperación de datos de ejemplo

Operaciones:

  1. Para consultar todos los sample_Media registros, seleccione las sample_name columnas y _sample_mediapolymorphiclookup_value mediante el envío de una GET solicitud a /sample_medias. La consulta usa las anotaciones de Microsoft.Dynamics.CRM.lookuplogicalname y OData.Community.Display.V1.FormattedValue OData para mostrar el tipo de entidad y el nombre con formato de cada valor de búsqueda.
  2. Filtre sample_Media los registros en los que la búsqueda polimórfica apunte a un registro específico sample_Book enviando una GET solicitud a /sample_medias con un adecuado $filter.
  3. Filtre sample_Media los registros en los que la búsqueda polimórfica apunte a un registro específico sample_Audio enviando una GET solicitud a /sample_medias con un adecuado $filter.

Sección 6: Exportación de una solución administrada

Operaciones: exporte la solución que creó en la sección 0: Crear publicador y solución como un paquete de solución administrado mediante la acción ExportarSolución. Guarde el archivo exportado .zip localmente para su uso en la sección 8.

Sección 7: Eliminar tablas de ejemplo y solución

Operaciones:

  1. Elimine la tabla sample_Media enviando una solicitud DELETE a /EntityDefinitions. Debe eliminar la tabla de referencia antes de las tablas a las que se hace referencia.
  2. Elimine las tablas sample_Book, sample_Audio y sample_Video mediante el envío de solicitudes DELETE a /EntityDefinitions.
  3. Consulte la solución no administrada enviando una solicitud GET a /solutions, filtrada por nombre único.
  4. Elimine la solución no administrada mediante el envío de una DELETE solicitud a /solutions(<solutionid>).

Sección 8: Importación y eliminación de una solución administrada

Operaciones:

  1. Importe la solución administrada exportada en la sección 6: Exportar solución administrada mediante la acción ImportSolution.
  2. Consulte la solución importada enviando una GET solicitud a /solutions filtrada por nombre único.
  3. Elimine la solución administrada importada mediante el envío de una DELETE solicitud a /solutions(<solutionid>).

Limpieza

De forma predeterminada, este ejemplo elimina todos los registros que crea. Si desea ver los registros creados una vez finalizado el ejemplo, cambie la $deleteCreatedRecords variable a $false. A continuación, se le pedirá que decida si desea eliminar los registros.

Consulte también

Uso de columnas de búsqueda de varias tablas
Usar la API web de Dataverse
Uso de la API web con definiciones de tabla
Ejemplos de la API Web
Ejemplo de operaciones de esquema de tabla de API web (PowerShell)