У нас в Dynamics довольно сложная схема. Запись имеет более 150 отношений OneToMany, 10 отношений ManyToOne и 1 отношение ManyToMany.
Я пытаюсь go через каждое отношение, выполняя этот код C#, который живет службой WCF:
RetrieveEntityRequest retrieveCustomerRelationships = new RetrieveEntityRequest
{
EntityFilters = EntityFilters.Relationships,
LogicalName = "dummy_customer"
};
RetrieveEntityResponse customerRelationships = RetrieveEntityResponse)proxy.Execute(retrieveCustomerRelationships);
var oneToNRelationships = customerRelationships.EntityMetadata.OneToManyRelationships;
Я перебираю каждое из отношений OneToMany и пытаюсь получить идентификатор объекта, на который имеется ссылка. В зависимости от типа объекта я хочу его удалить. Я думал, что могу использовать MetadataId как таковой:
foreach (var oneToNRelationship in oneToNRelationships){
RetrieveEntityRequest retrieveOneMetaDataRequest = new RetrieveEntityRequest
{
LogicalName = oneToNRelationship.SchemaName,
MetadataId = (Guid) oneToNRelationship.MetadataId
};
RetrieveEntityResponse oneMetadata = (RetrieveEntityResponse)proxy.Execute(retrieveOneMetaDataRequest);
}
Но он выдает ошибку «Не удалось найти объект»
Есть ли у кого-нибудь опыт работы с MetadataId и как мы можем его использовать?
Спасибо!
Мне действительно удалось успешно удалить эту родительскую запись, удалив все связанные записи, которые вызывали ошибки в плагинах. Тем не менее, я хочу знать, как можно использовать MetadataId. Был бы признателен, если бы кто-нибудь мог просветить меня.