Dynamics API返回实体字段和字段元数据

时间:2019-04-01 13:19:03

标签: c# dynamics-crm

我们可以在Dynamics API中获取实体元数据,它返回实体中的所有字段。我想知道是否可以同时获取字段的元数据?

var request = new RetrieveEntityRequest
            {
                EntityFilters = EntityFilters.All,
                LogicalName = entityName,
                RetrieveAsIfPublished = true,


            };
            var response = (RetrieveEntityResponse)_organisationService.Execute(request);

            return response != null ? response.EntityMetadata : null;

2 个答案:

答案 0 :(得分:1)

您的代码已经回答了您的问题,但是您可以像这样优化它:

    private EntityMetadata GetEntityMetadata(string entityName, EntityFilters entityFilters, bool retrieveAsIfPublished = false)
    {
        var request = new RetrieveEntityRequest
        {
            EntityFilters = entityFilters,
            LogicalName = entityName,
            RetrieveAsIfPublished = retrieveAsIfPublished,
        };

        var response = (RetrieveEntityResponse)_service.Execute(request);

        return response?.EntityMetadata;
    }

如果仅需要实体和属性元数据,则可以通过以下方式调用前一种方法:

        var entityMetadata = GetEntityMetadata("[entityname]", EntityFilters.Attributes | EntityFilters.Entity);
        var attributeMetadata = entityMetadata?.Attributes;

答案 1 :(得分:0)

您可以使用WebAPI

[organization url]/api/data/v8.2/EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName%20eq%20%27Account%27

这将为您提供CRM实例中帐户记录的元数据ID。现在,使用该值创建另一个API调用,并为此获取特定的属性。 这是下一个API调用:

[organization url]/api/data/v8.2/EntityDefinitions(GUID)?$select=LogicalName&$expand=Attributes($select=LogicalName)