コードを使って画像列定義を操作する

画像列を使用して画像データを格納します。 イメージ列は、バイナリ データを格納するために最適化されています。 Dataverse は、このデータをリレーショナル データ ストア に保存しません。これにより、パフォーマンスが向上し、容量の使用量が削減されます。 ストレージ容量の詳細

カスタムまたはカスタマイズ可能なテーブルには、0 個以上の画像列を含めることができます。 この記事では、コード内の列定義の操作について説明します。 これらの列に格納されたデータを使用するには、画像列データを使用するを参照してください。

画像列の作成

画像列を作成するための推奨される方法は、Power Apps を使用し、デザイナーを使用して列を定義する方法です。 詳細: 画像列

.NET 用の Dataverse SDK や Web API を使用して画像列を作成することも可能です。 以下の例では、その方法を紹介しています:

ImageAttributeMetadata ClassCreateAttributeRequest Class と一緒に使って、画像列を作成します。

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

}

詳細情報:

画像列の更新

AttributeMetadata クラス | AttributeMetadata EntityType から継承されたプロパティに加えて、次のプロパティ ImageAttributeMetadataクラス | ImageAttributeMetadata EntityType も更新できます。

Property Label Description
MaxSizeInKB 画像の最大サイズ この値を、特定のアプリケーションに適した最小の使用可能データ サイズに設定してください。 既定の設定は 10240 か 10 MB です。 最大値は 30720 KB (30 MB) です。 この値は、画像を作成した後にデザイナーを使用して Power Apps で変更することはできませんが、API を使用して変更できます。
CanStoreFullImage 完全な画像を保存できます この値が false の場合、サムネイル サイズの画像のみが使用可能になります。 フル画像は、Azure Blob のファイル ストレージに保存され、データ ストレージの消費を削減します。

イメージ属性構成 (AttributeImageConfig) テーブル をクエリして、フルサイズの画像をサポートする画像列を見つけることができます。 詳細: フルサイズの画像をサポートする画像列を検出する
IsPrimaryImage プライマリ画像の列 アプリケーションでテーブルの行を表すために列が使用されるかどうか。

テーブルにイメージ列が 1 つしかない場合、この値がデフォルトで設定されます。 テーブルに別のイメージ列がすでに存在する場合、新しいイメージ列を作成するときに true に設定すると、この値は無視されます。 ただし、作成後に列を更新して、新しい列をプライマリ画像列にすることができます。

IsPrimaryImage はfalseに設定することはできません。設定しようとすると例外がスローされます。 別の画像列を選択し、その IsPrimaryImage 値を true に設定する必要があります。

現在のプライマリ イメージ列である列を削除すると、テーブルの別のイメージ列が現在のプライマリ イメージ列として自動的に選択されます。

エンティティ画像構成 (EntityImageConfig) テーブル をクエリして、テーブルのプライマリ画像である画像列がわかります。 詳細: 主画像

注意

MaxHeightMaxWidth の値は常に 144 で、変更できません。 これらは、画像列の値ごとに作成されるサムネイル サイズの画像のサイズを定義します。

詳細情報:

画像列の定義を取得する

これらのクエリを使用して、画像列定義を取得します。

静的 GetImageColumns メソッドは、RetrieveMetadataChangesRequest クラスを使用してクエリを定義し、Dataverse または特定のテーブルに限定されたすべての画像列に関する詳細を返します。

評価される条件は、AttributeMetadata.AttributeTypeName プロパティ 値が 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(); 
        }             
    }); 
} 

詳細: セグメントクエリの定義

カスタマー マネージド キー (CMK) に関する制限事項

ファイル列に適用されるのと同じ制限が、フルサイズの画像を格納するように構成された画像列にも適用されます。 詳細: セルフマネージドキー キー (BYOK) の制限

参照

ファイル列のデータを使用する
コードを使ってファイル列定義を操作する
サンプル: Dataverse SDK for .NET を使用したファイル操作
サンプル: Dataverse Web API を使用したファイル操作

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。