Teilen über


Mithilfe von Code mit Bildspaltendefinitionen arbeiten

Verwenden Sie Bildspalten, um Bilddaten zu speichern. Bildspalten sind zum Speichern von Binärdaten optimiert. Dataverse speichert diese Daten nicht im relationalen Datenspeicher, was die Leistung verbessert und die Kapazitätsnutzung reduziert. Weitere Informationen zur Speicherkapazität

Eine benutzerdefinierte oder anpassbare Tabelle kann null oder weitere Bildspalten aufweisen. Dieser Artikel behandelt das Arbeiten mit Spaltendefinitionen in Code. Weitere Informationen zur Verwendung von Daten, die in diesen Spalten gespeichert sind, finden Sie unter Bildspaltendaten verwenden.

Bildspalten erstellen

Die empfohlene Methode zum Erstellen von Bildspalten ist die Verwendung von Power Apps und das Definieren Ihrer Spalten mit dem Designer. Weitere Informationen: Bildspalten.

Sie können Bildspalten auch mithilfe des Dataverse-SDK für .NET oder über die Web-API erstellen. Die Vorgehensweise wird im folgenden Beispiel veranschaulicht:

Verwenden Sie die ImageAttributeMetadata-Klasse mit der CreateAttributeRequest-Klasse, um eine Bildspalte zu erstellen.

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

}

Weitere Informationen:

Bildspalten aktualisieren

Zusätzlich zu den von der AttributeMetadata-Klasse | AttributeMetadata-EntityType übernommenen Eigenschaften können Sie auch die folgenden Eigenschaften der ImageAttributeMetadata-Klasse | ImageAttributeMetadata-EntityType aktualisieren.

Eigenschaften Label Beschreibung
MaxSizeInKB Maximale Bildgröße Legen Sie diesen Wert auf die kleinste verwendbare Datengröße fest, die für Ihre bestimmte Anwendung geeignet ist. Die Standardeinstellung ist 10240 oder 10 MB. Der maximale Wert ist 30720 KB (30 MB). Dieser Wert kann nicht in Power Apps mit dem Designer geändert werden, nachdem Sie die Bildspalte erstellt haben, aber Sie können ihn mit der API ändern.
CanStoreFullImage Kann vollständige Bilder speichern Wenn dieser Wert falsch ist, sind nur Bilder in Miniaturansichtgröße verfügbar. Die Vollbilder werden im Dateispeicher auf dem Azure Blob gespeichert, um den Datenspeicherverbrauch zu reduzieren.

Sie können die Bildattributkonfigurationstabelle (AttributeImageConfig) abfragen, um herauszufinden, welche Bildspalten Bilder in voller Größe unterstützen. Weitere Informationen: Ermitteln, welche Bildspalten Bilder in voller Größe unterstützen
IsPrimaryImage Primäre Bildspalte Ob die Spalte zur Darstellung einer Tabellenzeile in Anwendungen verwendet wird.

Wenn es für eine Tabelle nur eine Bildspalte gibt, ist dieser Wert standardmäßig festgelegt. Wenn für eine Tabelle bereits eine andere Bildspalte vorhanden ist, wird dieser Wert ignoriert, wenn er beim Erstellen einer neuen Bildspalte auf „wahr“ gesetzt ist. Sie können die Spalte jedoch aktualisieren, nachdem Sie sie erstellt haben, um die neue Spalte zur primären Bildspalte zu machen.

IsPrimaryImage kann nicht auf „falsch“ gesetzt werden. Wenn Sie es versuchen, wird eine Ausnahme ausgelöst. Sie müssen eine andere Bildspalte auswählen und diesen IsPrimaryImage-Wert auf „true“ setzen.

Wenn Sie eine Spalte löschen, bei der es sich um die aktuelle primäre Bildspalte handelt, wird automatisch eine andere Bildspalte für die Tabelle als aktuelle primäre Bildspalte ausgewählt.

Sie können die Entitätsbildkonfigurations-Tabelle (EntityImageConfig) abfragen, um zu erfahren, welche Bildspalten die primären Bilder für eine beliebige Tabelle sind. Weitere Informationen: Primäre Bilder

Hinweis

Die Werte MaxHeight und MaxWidth sind immer 144 und können nicht geändert werden. Diese definieren die Größe der Bilder in Miniaturansicht, die für jeden Bildspaltenwert erstellt werden.

Weitere Informationen:

Abrufen von Bildspaltendefinitionen

Verwenden Sie diese Abfragen, um Bildspaltendefinitionen abzurufen.

Bei der statischen GetImageColumns-Methode wird die RetrieveMetadataChangesRequest-Klasse verwendet, um eine Abfrage zu definieren, die Details zu allen Bildspalten in Dataverse zurückgibt oder auf eine bestimmte Tabelle beschränkt ist.

Die ausgewertete Bedingung ist, ob der Wert der AttributeMetadata.AttributeTypeName-Eigenschaft gleich AttributeTypeDisplayName.ImageType ist

/// <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(); 
        }             
    }); 
} 

Weitere Informationen: Abfrageschemadefinitionen

Einschränkungen bei kundenseitig verwalteten Schlüsseln (Customer Managed Keys, CMK)

Dieselben Einschränkungen, die für Dateispalten gelten, gelten auch für Bildspalten, die zum Speichern von Bildern in voller Größe konfiguriert sind. Weitere Informationen: Einschränkungen mit selbstverwaltetem Schlüssel (BYOK)

Siehe auch

Bildspaltendaten verwenden
Mithilfe von Code mit Dateispaltendefinitionen arbeiten
Beispiel: Bildvorgänge über das Dataverse-SDK für .NET
Beispiel: Bildvorgänge über die Dataverse-API

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).