获取Dataverse图像信息

问题描述 投票:0回答:1

我正在尝试创建一些代码来检索有关存储在图像列中的图像的信息(特别是对于 Dynamics365,但我认为这可能是一个通用的 Dataverse 问题)。请注意,我对通用图像列元数据(例如最大支持的大小)不感兴趣,而是对有关上传图像的特定信息感兴趣。我提出这个问题是因为这篇 MSDN 文章 仅描述了列元数据检索,而不是实际的图像元数据检索。

我目前有以下适用于文件类型列的代码:

public static CrmFileInformation RetrieveFileInformation(this IOrganizationService service, Guid entityId, string fieldName)
{
    var query = new QueryExpression("fileattachment")
    {
        ColumnSet = new ColumnSet("mimetype", "filesizeinbytes", "filename", "objectid")
    };
    query.Criteria.AddCondition(new ConditionExpression("objectid", ConditionOperator.Equal, entityId));
    query.Criteria.AddCondition(new ConditionExpression("regardingfieldname", ConditionOperator.Equal, fieldName));

    var results = service.RetrieveMultiple(query);
    if (results.Entities.Count != 1)
        throw new InvalidPluginExecutionException($"Could not find file information for entity ID {entityId} and field name {fieldName}.");
    var fileAttachment = results.Entities[0];

    return new CrmFileInformation
    {
        FileName = fileAttachment.GetAttributeValue<string>("filename"),
        MimeType = fileAttachment.GetAttributeValue<string>("mimetype"),
        Size = fileAttachment.GetAttributeValue<long>("filesizeinbytes")
    };
}

在上面的示例中,

CrmFileInformation
只是一个辅助类,包含我试图检索的一些基本信息。

如上所述 - 以上适用于文件类型列。然而,令我惊讶的是,它似乎不适用于图像类型列,这些列似乎在

fileattachment
系统表中没有记录。

我很难相信 DataVerse 不存储这些信息,但我很难找到它。有谁知道我应该寻找哪些桌子?

image dynamics-crm dataverse
1个回答
0
投票

我在发布问题后不久就找到了桌子......

图像元数据似乎存储在

imagedescriptor
表内。不幸的是,该表中并非所有信息都可用 - 文件名似乎存储在
fileattachment
表中(该表与
imagedescriptor
表之间有链接)。

令人惊讶的是,这两个表似乎没有填写目标字段的名称(与文件列不同),所以我很困惑如果一个表中有两个图像列会发生什么(假设这甚至是可能的)。

© www.soinside.com 2019 - 2024. All rights reserved.