Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- Quick Start Web API with PowerShell and Visual Studio Code
- Use PowerShell y Visual Studio Code con la API web de Dataverse
Estos artículos tienen los mismos requisitos previos.
Instale o verifique que lo siguiente esté instalado
Instale Visual Studio Code. Consulte Download Visual Studio Code
Instale la extensión de PowerShell para Visual Studio Code. Consulte PowerShell para Visual Studio Code
Instale PowerShell 7.4 o superior. Consulte Instalar PowerShell en Windows, Linux y macOS
Instale el módulo Az PowerShell versión 11.1.0 o superior. Consulte Cómo instalar Azure PowerShell
Para actualizar una instalación existente a la última versión, use
Update-Module -Name Az -Force
Comprobación de la instalación
Abra Visual Studio Code.
En el menú Terminal, seleccione Nuevo terminal.
En Visual Studio Code panel de navegación, seleccione el icono
para la extensión de PowerShell.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).VersionPresione 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/, dondeyourorg.crmes diferente. - Comprensión básica de lenguaje de scripting PowerShell
Cómo ejecutar esta muestra
Clonar o descargar el repositorio de ejemplos de PowerApps.
Abra el archivo
/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1usando Visual Studio Code.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(Opcional) Configure la variable
$deleteCreatedRecordsa$falsesi no desea eliminar los registros que crea esta muestra.Presione F5 para ejecutar el ejemplo.
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:
- Para consultar un publicador existente con el
examplepublishernombre único, envíe unaGETsolicitud a/publishers. - Cree el publicador si aún no existe enviando una
POSTsolicitud a/publishers. - Para consultar una solución existente denominada
polymorphiclookupexamplesolution, envíe unaGETsolicitud a/solutions. - Cree la solución si aún no existe enviando una
POSTsolicitud 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:
- Cree una
sample_Booktabla enviando unaPOSTsolicitud a/EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principalsample_namey una columna desample_CallNumbercadena. - Cree una
sample_Audiotabla enviando unaPOSTsolicitud a/EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principalsample_namey una columna desample_AudioFormatcadena. - Cree una
sample_Videotabla enviando unaPOSTsolicitud a/EntityDefinitions, si aún no existe. Esta tabla incluye un atributo principalsample_namey una columna desample_VideoFormatcadena.
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:
- Cree una columna de búsqueda
sample_MediaPolymorphicLookupen la tablasample_Mediajunto con relaciones de uno a varios para cada una de las tres tablas a las que se hace referencia (sample_Book,sample_Audio, ysample_Video) mediante la acción CreatePolymorphicLookupAttribute. Esta acción única crea el atributo y las tres relaciones a la vez. - Recupere el
ReferencingEntityNavigationPropertyNamede cada una de las tres relaciones (sample_media_sample_book,sample_media_sample_audio,sample_media_sample_video) enviando solicitudesGETa/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:
- Recupere el
EntitySetNamepara cada una de las cuatro tablas enviandoGETsolicitudes a/EntityDefinitions. - Cree dos
sample_Bookregistros enviandoPOSTsolicitudes asample_books. - Cree dos
sample_Audioregistros enviandoPOSTsolicitudes asample_audios. - Cree dos
sample_Videoregistros enviandoPOSTsolicitudes asample_videos. - Cree cuatro
sample_Mediaregistros enviandoPOSTsolicitudes asample_medias. Cada registro multimedia utiliza el nombre de propiedad de navegación obtenido en la sección 3 y la sintaxis@odata.bindpara 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:
- Para consultar todos los
sample_Mediaregistros, seleccione lassample_namecolumnas y_sample_mediapolymorphiclookup_valuemediante el envío de unaGETsolicitud a/sample_medias. La consulta usa las anotaciones deMicrosoft.Dynamics.CRM.lookuplogicalnameyOData.Community.Display.V1.FormattedValueOData para mostrar el tipo de entidad y el nombre con formato de cada valor de búsqueda. - Filtre
sample_Medialos registros en los que la búsqueda polimórfica apunte a un registro específicosample_Bookenviando unaGETsolicitud a/sample_mediascon un adecuado$filter. - Filtre
sample_Medialos registros en los que la búsqueda polimórfica apunte a un registro específicosample_Audioenviando unaGETsolicitud a/sample_mediascon 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:
- Elimine la tabla
sample_Mediaenviando una solicitudDELETEa/EntityDefinitions. Debe eliminar la tabla de referencia antes de las tablas a las que se hace referencia. - Elimine las tablas
sample_Book,sample_Audioysample_Videomediante el envío de solicitudesDELETEa/EntityDefinitions. - Consulte la solución no administrada enviando una solicitud
GETa/solutions, filtrada por nombre único. - Elimine la solución no administrada mediante el envío de una
DELETEsolicitud a/solutions(<solutionid>).
Sección 8: Importación y eliminación de una solución administrada
Operaciones:
- Importe la solución administrada exportada en la sección 6: Exportar solución administrada mediante la acción ImportSolution.
- Consulte la solución importada enviando una
GETsolicitud a/solutionsfiltrada por nombre único. - Elimine la solución administrada importada mediante el envío de una
DELETEsolicitud 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)