Ejemplo: Operaciones de imagen usando la API web de Dataverse

Este ejemplo .NET 6.0 demuestra cómo realizar operaciones con columnas de imagen utilizando la API web de Dataverse.

Esta muestra utiliza el código auxiliar común de la biblioteca de clases WebAPIService (C#).

Requisitos previos

  • Microsoft Visual Studio 2022
  • Accesa a Dataverse con Administrador del sistema o privilegios de personalizador del sistema.

Cómo ejecutar el ejemplo

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

  2. Abra el archivo PowerApps-Samples\dataverse\webapi\C#-NETx\ImageOperations\ImageOperations.sln usando Visual Studio 2022.

  3. Editar el archivo appsettings.json para establecer los siguientes valores de propiedad:

    Property Instrucciones
    Url La URL para su entorno. Reemplazar el valor de marcador de posición https://yourorg.api.crm.dynamics.com con el valor para su entorno. Consulte Ver recursos para desarrolladores para encontrar esto.
    UserPrincipalName Reemplazar el valor de marcador de posición you@yourorg.onmicrosoft.com con el valor de UPN que usa para acceder al entorno.
    Password Reemplazar el valor de marcador de posición yourPassword con la contraseña que utiliza.
  4. Guarde el archivo appsettings.json

  5. Presione F5 para ejecutar el ejemplo.

Salida de muestra

El resultado del ejemplo deberá ser ahora similar a esto:

Creating image column named 'sample_ImageColumn' on the account table ...
Created image column named 'sample_ImageColumn' in the account table.
Create 5 records while CanStoreFullImage is false.
        Created account: 'CanStoreFullImage false 144x144.png'
        Created account: 'CanStoreFullImage false 144x400.png'
        Created account: 'CanStoreFullImage false 400x144.png'
        Created account: 'CanStoreFullImage false 400x500.png'
        Created account: 'CanStoreFullImage false 60x80.png'
Set the CanStoreFullImage property to True
Create 5 records while CanStoreFullImage is true.
        Created account: 'CanStoreFullImage true 144x144.png'
        Created account: 'CanStoreFullImage true 144x400.png'
        Created account: 'CanStoreFullImage true 400x144.png'
        Created account: 'CanStoreFullImage true 400x500.png'
        Created account: 'CanStoreFullImage true 60x80.png'
Retrieving records with thumbnail images:
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 144x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 144x400.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 400x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 400x500.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 60x80.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 144x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 144x400.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 400x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 400x500.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 60x80.png_retrieved.png
Attempt to download full-size images for all 10 records using 3 different methods:
Download full-sized files with actions: 5 should fail
        Download failed: No FileAttachment records found for imagedescriptorId: e40bdcf1-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id e30bdcf1-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2258d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2158d4f7-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2658d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2558d4f7-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2a58d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2958d4f7-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2e58d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2d58d4f7-598d-ed11-81ad-000d3a9933c9
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x144.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x400.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x144.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x500.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 60x80.png_downloaded_with_actions.png
Download full-sized files with chunks: 5 should fail
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x144.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x400.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x144.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x500.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 60x80.png_downloaded_with_chunks_full-sized.png
Download full-sized files in single requests: 5 should fail
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x144.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x400.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x144.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x500.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 60x80.png_downloaded_with_stream_full-sized.png
Deleting the image data from the columns using 3 different methods:
        CanStoreFullImage false 144x144.png sample_imagecolumn deleted with PATCH
        CanStoreFullImage false 144x400.png sample_imagecolumn deleted with PATCH
        CanStoreFullImage false 400x144.png sample_imagecolumn deleted with PATCH
        CanStoreFullImage false 400x500.png sample_imagecolumn deleted with PUT
        CanStoreFullImage false 60x80.png sample_imagecolumn deleted with PUT
        CanStoreFullImage true 144x144.png sample_imagecolumn deleted with PUT
        CanStoreFullImage true 144x400.png sample_imagecolumn deleted with DELETE
        CanStoreFullImage true 400x144.png sample_imagecolumn deleted with DELETE
        CanStoreFullImage true 400x500.png sample_imagecolumn deleted with DELETE
        CanStoreFullImage true 60x80.png sample_imagecolumn deleted with DELETE
Deleted the account records created for this sample.
Deleting the image column named 'sample_ImageColumn' on the account table ...
Deleted the image column named 'sample_ImageColumn' in the account table.
Sample completed.

Demostraciones

El código para este ejemplo se incluye en el archivo Program.cs.

El proyecto usa una clase Utility para realizar operaciones que impliquen la creación o recuperación de datos de esquema. Esta clase está en el archivo Utility.cs.

Este proyecto realiza estas operaciones:

Crear una columna de imagen automática

Esta muestra necesita crear una nueva columna de imagen que sea la imagen principal para la tabla de cuentas. También debe devolver el sistema al estado original cuando haya terminado. Así que el programa hace estas cosas al principio:

  1. Capture el nombre de la imagen principal original con el método Utility.GetTablePrimaryImageName .

  2. Utilice el método Utility.CreateImageColumn para crear una nueva columna de imagen llamada sample_ImageColumn en la tabla de cuentas si aún no existe.

    Nota

    El valor de esta columna de imagen CanStoreFullImage es falso.

  3. Utilice el método Utility.SetTablePrimaryImageName para hacer sample_ImageColumn la columna de imagen primaria.

Crear registros de cuenta con datos de imagen

  1. El programa recorre una lista de cinco nombres de archivo que coinciden con los nombres de los archivos en la carpeta Images.
  2. Para cada imagen, el programa crea un registro de cuenta con el name ajustado a CanStoreFullImage false {fileName} y el archivo byte[] establecido como el valor sample_ImageColumn.
  3. A continuación, el programa utiliza el método Utility.UpdateCanStoreFullImage para establecer la definición de columna sample_ImageColumn del valor CanStoreFullImage en verdadero.
  4. Una vez más, el programa recorre los nombres de los archivos y crea cinco registros de cuenta con los mismos archivos de imagen establecidos en el valor sample_ImageColumn. Esta vez name es CanStoreFullImage true {fileName}

En el siguiente código, podemos ver cómo el valor de la propiedad CanStoreFullImage cambia qué datos están disponibles.

REcuperar los registro de cuenta

  1. El código recupera los 10 registros de cuenta creados en el paso anterior, incluidos los datos de la imagen.

  2. Para cada registro de cuenta, los datos de la imagen se descargan en la carpeta DownloadedImages con el nombre {recordName}_retrieved.png.

    Nota

    Todos estos registros son imágenes en miniatura.

Descargar las imágenes del registro de cuenta

Este programa utiliza tres métodos diferentes para descargar archivos de imagen.

Nota

En cada caso, 5 de las 10 operaciones fallen porque no se cargaron imágenes de tamaño completo mientras CanStoreFullImage era falso Esos registros se crearon mientras CanStoreFullImage era verdadero y fueron correctos.

Descargar con Acciones

El código usa el método estático DownloadImageWithActions, que encapsula el uso de las acciones InitializeFileBlocksDownload y DownloadBlock para descargar las imágenes como se describe en Usar Dataverse mensajes para descargar un archivo.

Nota

Estas operaciones fallan cuando no hay una imagen de tamaño completo para descargar. El mensaje de error es: No FileAttachment records found for imagedescriptorId: <guid> for image attribute: sample_imagecolumn of account record with id <guid>.

Descargar con fragmentos

El código usa el método estático DownloadImageWithChunks, que demuestra cómo descargar imágenes como se describe en Descargar el archivo en fragmentos usando la API web.

Nota

Estas operaciones no fallan cuando no hay una imagen de tamaño completo para descargar, simplemente devuelven 204 No Content.

Descargar con Stream

El código usa el método estático DownloadImageWithStream, que demuestra cómo descargar imágenes como se describe en Descargar un archivo en una única solicitud usando la API web

Nota

Estas operaciones no fallan cuando no hay una imagen de tamaño completo para descargar, simplemente devuelven 204 No Content.

Eliminar los datos de imagen

  1. El programa utiliza tres métodos diferentes para demostrar la eliminación de valores de imagen, utilizando PATCH, PUT y DELETE.
  2. El programa verifica la eliminación de los registros recuperando los registros nuevamente utilizando los mismos criterios que antes. El valor de la columna de la imagen es nulo.

Limpiar

Para dejar el sistema en el estado anterior a la ejecución del ejemplo, el programa hace lo siguiente:

  • Eliminar los registros de cuenta.
  • Establecer la imagen principal de la tabla de cuenta de nuevo en el valor original.
  • Eliminar la columna de imagen.

Consulte también

Usar datos de columna de imagen
Trabajar con definiciones de columna de imagen mediante código
Usar datos de columna de archivo
Ejemplo: Operaciones de imagen usando la SDK de Dataverse para .NET

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).