Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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));
            }
        }