private void AssertCanDelete(IOrganizationService service, AttributeMetadata attribute) { Trace("Checking for Delete Dependencies for " + attribute.EntityLogicalName + "." + attribute.LogicalName); var depends = (RetrieveDependenciesForDeleteResponse)service.Execute(new RetrieveDependenciesForDeleteRequest { ComponentType = (int)componenttype.Attribute, ObjectId = attribute.MetadataId.GetValueOrDefault() }); var errors = new List<string>(); foreach (var d in depends.EntityCollection.ToEntityList<Dependency>()) { var type = (componenttype)d.DependentComponentType.GetValueOrDefault(); var dependentId = d.DependentComponentObjectId.GetValueOrDefault(); var err = type + " " + dependentId; switch (type) { case componenttype.EntityRelationship: var response = (RetrieveRelationshipResponse)service.Execute(new RetrieveRelationshipRequest { MetadataId = dependentId }); Trace("Entity Relationship {0} must be manually removed/added", response.RelationshipMetadata.SchemaName); break; case componenttype.SavedQueryVisualization: var sqv = service.GetEntity<SavedQueryVisualization>(dependentId); err = $"{err} ({sqv.Name} - {sqv.CreatedBy.Name})"; break; case componenttype.SavedQuery: var sq = service.GetEntity<SavedQuery>(dependentId); err = $"{err} ({sq.Name} - {sq.CreatedBy.Name})"; break; } errors.Add(err); } if (errors.Count > 0) { throw new Exception("Dependencies found: " + Environment.NewLine + "\t" + string.Join(Environment.NewLine + "\t", errors)); } }
private void AssertCanDelete(IOrganizationService service, AttributeMetadata attribute) { Trace("Checking for Delete Dependencies for " + attribute.EntityLogicalName + "." + attribute.LogicalName); var depends = (RetrieveDependenciesForDeleteResponse)service.Execute(new RetrieveDependenciesForDeleteRequest { ComponentType = (int)componenttype.Attribute, ObjectId = attribute.MetadataId.GetValueOrDefault() }); var errors = new List<string>(); foreach (var d in depends.EntityCollection.ToEntityList<Dependency>()) { var type = (componenttype)d.DependentComponentType.GetValueOrDefault(); errors.Add(type + " " + d.DependentComponentObjectId.GetValueOrDefault()); if (type == componenttype.EntityRelationship) { var response = (RetrieveRelationshipResponse)service.Execute(new RetrieveRelationshipRequest { MetadataId = d.DependentComponentObjectId.GetValueOrDefault() }); Trace("Entity Relationship {0} must be manually removed/added", response.RelationshipMetadata.SchemaName); } } if (errors.Count > 0) { throw new Exception("Dependencies found: " + string.Join(", ", errors)); } }