Utiliser des définitions de colonne d’image avec du code

Utilisez les colonnes d’images pour stocker des données d’images. Les colonnes Image sont optimisées pour stocker des données binaires. Dataverse ne sauvegarde pas ces données dans le magasin de données relationnel, ce qui améliore les performances et réduit l’utilisation de la capacité. En savoir plus sur la capacité de stockage

Une table personnalisée ou personnalisable peut avoir zéro ou plus de colonnes d’images. Cet article décrit l’utilisation des définitions de colonne dans le code. Pour utiliser les données stockées dans ces colonnes, consultez Utiliser les données de colonne d’image.

Créer des colonnes d’images

La méthode recommandée pour créer des colonnes d’images consiste à utiliser Power Apps et à définir vos colonnes en utilisant le concepteur. Pour plus d’informations, consultez Colonnes d’image.

Vous pouvez également créer des colonnes d’images en utilisant le kit SDK Dataverse pour .NET ou l’API web. Les exemples suivants montrent comment :

Utilisez la Classe ImageAttributeMetadata avec la Classe CreateAttributeRequest pour créer une colonne d’images.

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

}

Pour plus d’informations :

Mettre à jour des colonnes d’images

Outre les propriétés héritées de la classe AttributeMetadata | du type d’entité AttributeMetadata, vous pouvez également mettre à jour les propriétés suivantes de la classe ImageAttributeMetadata | du type d’entité ImageAttributeMetadata.

Property Étiquette Description
MaxSizeInKB Taille d’image maximale Définissez cette valeur sur la plus petite taille de données accessible appropriée pour cette application spécifique. Le paramètre par défaut est 10240, ou 10 Mo. La valeur maximale est 30720 Ko (30 Mo). Cette valeur ne peut pas être modifiée dans Power Apps à l’aide du concepteur après avoir créé la colonne d’images, mais vous pouvez la modifier à l’aide de l’API.
CanStoreFullImage Peut stocker des images complètes Si cette valeur est définie comme fausse, seules les images de la taille d’une miniature sont disponibles. Les images complètes sont stockées dans le stockage de fichiers sur le blob Azure pour réduire la consommation de stockage de données.

Vous pouvez interroger la table Configuration de l’attribut d’image (AttributeImageConfig) pour trouver les colonnes d’images qui prennent en charge les images en taille réelle. Pour plus d’informations : Détecter quelles colonnes d’images prennent en charge les images en taille réelle
IsPrimaryImage Colonne Image principale Indique si la colonne est utilisée pour représenter une ligne de table dans les applications.

S’il n’y a qu’une seule colonne d’images pour une table, cette valeur est définie par défaut. Lorsqu’une autre colonne image existe déjà pour une table, cette valeur est ignorée si elle est fixée sur vrai lors de la création d’une nouvelle colonne d’images. Toutefois, vous pouvez mettre à jour la colonne après l’avoir créée pour que la nouvelle colonne devienne la colonne d’image principale.

IsPrimaryImage ne peut pas être défini comme faux ; une exception est levée si vous essayez. Vous devez choisir une autre colonne d’images et définir la valeur IsPrimaryImage sur vrai.

Si vous supprimez une colonne qui est la colonne d’images principale actuelle, une autre colonne d’images pour la table est automatiquement sélectionnée pour devenir la colonne d’images principale actuelle.

Vous pouvez interroger la table Configuration de l’image de l’entité (EntityImageConfig) pour savoir quelles colonnes d’images sont les images principales d’une table. Pour plus d’informations : Images principales

Notes

Les valeurs MaxHeight et MaxWidth sont toujours de 144 et ne peuvent pas être modifiées. Elles définissent la taille des images miniatures qui sont créées pour chaque valeur de la colonne d’images.

Pour plus d’informations :

Récupérer les définitions de colonne d’images

Utilisez ces requêtes pour récupérer les définitions des colonnes d’images.

La méthode GetImageColumns statique utilise la classe RetrieveMetadataChangesRequest pour définir une requête afin de renvoyer des détails sur toutes les colonnes d’image dans Dataverse, ou limitées à une table spécifique.

La condition évaluée est de savoir si la valeur de la propriété AttributeMetadata.AttributeTypeName est égale à 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(); 
        }             
    }); 
} 

Pour plus d’informations : Interroger les définitions de schéma

Restrictions avec les clés gérées par le client (CMK)

Les restrictions qui s’appliquent aux colonnes de fichiers s’appliquent également aux colonnes d’images configurées pour stocker des images de taille normale. Plus d’informations : Restrictions avec clé autogérée (BYOK)

Voir aussi

Utiliser les données de colonne d’image
Utiliser des définitions de colonne de fichier avec du code
Exemple : opérations sur les images en utilisant le SDK Dataverse pour .NET
Exemple : opérations sur les images en utilisant l’API web de Dataverse

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).