Compartir a través de


Trabajar con definiciones de columna de imagen mediante código

Utilice columnas de imágenes para almacenar datos de imágenes. Las columnas Imagen se optimizan para almacenar datos binarios. Dataverse no guarda estos datos en el almacén de datos relacional, lo que mejora el rendimiento y reduce el uso de capacidad. Más información sobre la capacidad de almacenamiento

Una tabla personalizada o personalizable puede tener cero o más columnas de imagen. En este artículo se explica cómo trabajar con definiciones de columna en código. Para utilizar los datos almacenados en estas columnas, consulte Usar datos de columna de imagen.

Crear columnas de imagen

La forma recomendada de crear columnas de imagen es usar Power Apps y definir sus columnas usando el diseñador. Más información: Columnas de imagen.

También puede crear columnas de imagen usando el SDK de Dataverse para .NET o usando la API web. Los siguientes ejemplos muestran cómo:

Use la Clase ImageAttributeMetadata con la Clase CreateAttributeRequest para crear una columna de imagen.

public static void CreateImageColumn(IOrganizationService service, string entityLogicalName, string imageColumnSchemaName) {

    ImageAttributeMetadata imageColumn = new()
    {
        SchemaName = imageColumnSchemaName,
        DisplayName = new Label("Sample Image Column", 1033),
        RequiredLevel = new AttributeRequiredLevelManagedProperty(
                AttributeRequiredLevel.None),
        Description = new Label("Sample Image Column for ImageOperation samples", 1033),
        MaxSizeInKB = 30 * 1024, // 30 MB
        CanStoreFullImage = true

    };

    CreateAttributeRequest createimageColumnRequest = new() {
        EntityName = entityLogicalName,
        Attribute = imageColumn                   
    };

    service.Execute(createimageColumnRequest);

}

Más información:

Actualizar columnas de imagen

Además de las propiedades heredadas de la clase AttributeMetadata | AttributeMetadata EntityType, también puede actualizar las siguientes propiedades de la clase ImageAttributeMetadata | ImageAttributeMetadata EntityType.

Property Etiqueta Descripción
MaxSizeInKB Tamaño máximo de imagen Establezca este valor en el tamaño de datos más pequeño que pueda usar para su aplicación específica. La configuración predeterminada es 10240 o 10 MB. El valor máximo es 30720 KB (30 MB). Este valor no se puede cambiar en Power Apps usando el diseñador después de crear la columna de imagen, pero puede cambiarlo usando la API.
CanStoreFullImage Puede almacenar imágenes completas Cuando este valor es falso, solo están disponibles imágenes en tamaño miniatura. Las imágenes completas se almacenan en el almacenamiento de archivos en el blob de Azure para reducir el consumo de almacenamiento de datos.

Puede consultar la tabla Configuración de atributos de imagen (AttributeImageConfig) para encontrar qué columnas de imagen admiten imágenes de tamaño completo. Más información: Detecte qué columnas de imágenes admiten imágenes de tamaño completo
IsPrimaryImage Columna de imagen principal Si la columna se utiliza para representar una fila de la tabla en aplicaciones.

Si solo hay una columna de imagen para una tabla, este valor se establece de forma predeterminada. Cuando ya existe otra columna de imagen para una tabla, este valor se ignora si se establece en verdadero al crear una nueva columna de imagen. Sin embargo, puede actualizar la columna después de crearla para que la nueva columna sea la columna de imagen principal.

IsPrimaryImage no se puede establecer en falso, se genera una excepción si lo intenta. Debe elegir otra columna de imagen y establecer ese valor IsPrimaryImage en verdadero.

Si elimina una columna que es la columna de imagen principal actual, se selecciona automáticamente otra columna de imagen para la tabla para que sea la columna de imagen principal actual.

Puede consultar la tabla Configuración de imagen de entidad (EntityImageConfig) para saber qué columnas de imagen son las imágenes principales de cualquier tabla. Más información: Imágenes primarias

Nota

Los valores MaxHeight y MaxWidth son siempre 144 y no se pueden cambiar. Estos definen el tamaño de las imágenes en miniatura que se crean para cada valor de columna de imagen.

Más información:

Recuperar definiciones de columnas de imagen

Utilice estas consultas para recuperar definiciones de columnas de imágenes.

El método GetImageColumns estático usa la clase RetrieveMetadataChangesRequest para definir una consulta que devuelva detalles sobre todas las columnas de imágenes en Dataverse o limitadas a una tabla específica.

La condición evaluada es si el valor de AttributeMetadata.AttributeTypeName propiedad es igual a AttributeTypeDisplayName.ImageType

/// <summary> 
/// Returns the image columns
/// </summary> 
/// <param name="service">The IOrganizationService</param> 
/// <param name="tableLogicalName">Optional filter by table logical name</param> 
static void GetImageColumns(IOrganizationService service, string tableLogicalName = "account") 
{ 
    // The Query definition 
    EntityQueryExpression entityQuery = new EntityQueryExpression() 
    {                 
        Properties = new MetadataPropertiesExpression("SchemaName","Attributes"), 
        AttributeQuery = new AttributeQueryExpression() 
        { 
            Properties = new MetadataPropertiesExpression( 
                "SchemaName", 
                "CanStoreFullImage", 
                "IsPrimaryImage", 
                "MaxSizeInKB") 
        } 
    }; 

    // Enable optional filtering by table logical name 
    if (!string.IsNullOrEmpty(tableLogicalName)){ 

        entityQuery.Criteria.Conditions.Add( 
            new MetadataConditionExpression( 
                propertyName: "LogicalName", 
                conditionOperator: MetadataConditionOperator.Equals, 
                value: tableLogicalName)); 
    } 

    // Only Image columns 
    entityQuery.AttributeQuery.Criteria.Conditions.Add( 
        new MetadataConditionExpression( 
            propertyName: "AttributeTypeName", 
            conditionOperator: MetadataConditionOperator.Equals, 
            value: AttributeTypeDisplayName.ImageType)); 


    // The request 
    RetrieveMetadataChangesRequest request = new RetrieveMetadataChangesRequest() {  
            Query = entityQuery 
    }; 

    // Send the request 
    var response = (RetrieveMetadataChangesResponse)service.Execute(request); 

    //Display the results: 
    response.EntityMetadata.ToList().ForEach(e => { 
        if (e.Attributes.Count() > 0) 
        { 
            Console.WriteLine($"Table: {e.SchemaName}"); 

            e.Attributes.ToList().ForEach(a => { 

                // To access image column properties 
                var  imageColumn = (ImageAttributeMetadata)a; 

                Console.WriteLine($"\t{a.SchemaName}"); 
                Console.WriteLine($"\t\tCanStoreFullImage:{imageColumn.CanStoreFullImage}"); 
                Console.WriteLine($"\t\tIsPrimaryImage:{imageColumn.IsPrimaryImage }"); 
                Console.WriteLine($"\t\tMaxSizeInKB:{imageColumn.MaxSizeInKB}"); 
            }); 

            Console.WriteLine(); 
        }             
    }); 
} 

Más información: Definiciones de esquema de consulta

Restricciones con claves administradas por el cliente (CMK)

Las mismas restricciones que se aplican a las columnas de archivos también se aplican a las columnas de imágenes configuradas para almacenar imágenes de tamaño completo. Más información: Restricciones con clave autoadministrable (BYOK)

Consulte también

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

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).