我正在使用 RetrieveEntityRequest 获取实体属性的元数据:
RetrieveEntityRequest entityRequest = new RetrieveEntityRequest
{
EntityFilters = EntityFilters.Attributes,
LogicalName = joinedEntityName.Value,
};
RetrieveEntityResponse joinedEntityMetadata = (RetrieveEntityResponse)_service.Execute(entityRequest);
现在,假设我需要为多个实体执行此请求。是否可以在一次执行中执行此操作(可能不使用 RetrieveEntityRequest),而不是针对每个实体发出一个请求?
最佳答案
您不能使用 RetrieveEntityRequest
来做到这一点。但是,您可以执行 RetrieveMetadataChangesRequest
得到你想要的。它的命名具有误导性,但如果您不提供 ClientVersionStamp
属性,它只会检索您在 Query
属性中指定的所有内容。
这是一个简单的示例,您将检索帐户和联系人的元数据,并且仅检索 LogicalName
和 DisplayName
属性:
var customFilterExpression = new[]
{
new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, "account"),
new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, "contact")
};
var customFilter = new MetadataFilterExpression(LogicalOperator.Or);
customFilter.Conditions.AddRange(customFilterExpression);
var entityProperties = new MetadataPropertiesExpression
{
AllProperties = false
};
entityProperties.PropertyNames.AddRange("LogicalName", "DisplayName");
var request = new RetrieveMetadataChangesRequest
{
Query = new EntityQueryExpression
{
Properties = entityProperties,
Criteria = customFilter,
}
};
这种方法还有一个好处,就是只检索你需要的特定属性,这使得请求更快,负载更小。它专为移动设备而设计,您只想检索所需的元数据,以及自上次检索以来发生的变化,但它在很多情况下都能很好地工作。
关于c# - 一次检索多个实体的实体请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45979937/