Compartilhar via


Trabalhar com definições de coluna de imagem usando código

Use colunas de imagem para armazenar dados de imagem. As colunas de imagem são otimizadas para o armazenamento de dados binários. O Dataverse não salva esses dados no armazenamento de dados relacional, o que melhora o desempenho e reduz o uso da capacidade. Saiba mais sobre a capacidade de armazenamento

Uma tabela personalizada ou personalizável pode ter zero ou mais colunas de imagem. Este artigo é sobre como trabalhar com definições de coluna no código. Para usar dados armazenados nessas colunas, consulte Usar dados de coluna de imagem.

Criar colunas de imagem

A maneira recomendada de criar colunas de imagem é usar o Power Apps e definir suas colunas usando o designer. Mais informações: Colunas de Imagem.

Você também pode criar colunas de imagem usando o SDK do Dataverse para .NET ou usando a API Web. Os exemplos a seguir mostram como:

Use a classe ImageAttributeMetadata junto com a classe CreateAttributeRequest para criar uma coluna de imagem.

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

}

Mais informações:

Atualizar colunas de imagem

Além das propriedades herdadas da classe | AttributeMetadata EntityType, você também pode atualizar as propriedades a seguir da classe | ImageAttributeMetadata EntityType.

Propriedade Etiqueta Descrição
MaxSizeInKB Tamanho máximo da imagem Defina esse valor como o menor tamanho de dados utilizável apropriado para seu aplicativo específico. A configuração padrão é 10240, ou 10 MB. O valor máximo é 30720 KB (30 MB). Esse valor não pode ser alterado no Power Apps usando o designer depois de criar a coluna de imagem, mas você pode alterá-la usando a API.
CanStoreFullImage Pode armazenar imagens completas Quando esse valor é falso, apenas imagens em miniatura estão disponíveis. Imagens completas são armazenadas no armazenamento de arquivos no blob do Azure para reduzir o consumo de armazenamento de dados.

Você pode consultar a tabela Configuração de Atributo de Imagem (AttributeImageConfig) para localizar quais colunas de imagem dão suporte a imagens de tamanho completo. Mais informações: detectar quais colunas de imagem dão suporte a imagens de tamanho completo
IsPrimaryImage Coluna de imagem primária Se a coluna é usada para representar uma linha de tabela em aplicativos.

Se houver apenas uma coluna de imagem para uma tabela, esse valor será definido por padrão. Quando outra coluna de imagem já existe para uma tabela, esse valor é ignorado se definido como true ao criar uma nova coluna de imagem. No entanto, você pode atualizar a coluna depois de criá-la para tornar a nova coluna a coluna de imagem primária.

IsPrimaryImage não pode ser definida como false, uma exceção é gerada se você tentar. Você deve escolher outra coluna de imagem e definir esse IsPrimaryImage valor como true.

Se você excluir uma coluna que é a coluna de imagem primária atual, outra coluna de imagem da tabela será selecionada automaticamente para ser a coluna de imagem primária atual.

Você pode consultar a tabela Entity Image Configuration (EntityImageConfig) para saber quais colunas de imagem são as imagens primárias de qualquer tabela. Mais informações: Imagens Primárias

Observação

Os MaxHeight valores e os MaxWidth valores são sempre 144 e não podem ser alterados. Elas definem o tamanho das imagens em miniatura que são criadas para cada valor de coluna de imagem.

Mais informações:

Recuperar definições de coluna de imagem

Use essas consultas para recuperar definições de coluna de imagem.

O método estático GetImageColumns usa a RetrieveMetadataChangesRequest classe para definir uma consulta para retornar detalhes sobre todas as colunas de imagem no Dataverse ou limitadas a uma tabela específica.

A condição avaliada é se o valor da propriedade AttributeMetadata.AttributeTypeName é 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(); 
        }             
    }); 
} 

Mais informações: Definições de esquema de consulta

Restrições com CMK (Chaves Gerenciadas pelo Cliente)

As mesmas restrições que se aplicam às colunas de arquivo também se aplicam às colunas de imagem configuradas para armazenar imagens de tamanho completo. Mais informações: Restrições com BYOK (chave autogerenciada)

Consulte também

Usar dados de coluna de imagem
Trabalhar com definições de coluna de arquivo usando código
Exemplo: Operações de imagem usando o SDK do Dataverse para .NET
Exemplo: Operações de imagem usando a API Web do Dataverse