我们可以在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;
您的代码已经回答了您的问题,但您可以像这样优化它:
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;
使用 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)