// construct the list of objects on the C-side that would be deleted if // elementToBeDeleted were to be deleted (C-side EntityTypes and Associations only) private static IEnumerable <EFObject> ConceptualObjectsToBeDeleted(EFElement elementToBeDeleted) { var cSideObjectsThatWouldBeDeleted = new HashSet <EFObject>(); var cetToBeDeleted = elementToBeDeleted as ConceptualEntityType; var assocToBeDeleted = elementToBeDeleted as Association; // if (null != cetToBeDeleted) { // add the C-side EntityType itself cSideObjectsThatWouldBeDeleted.Add(cetToBeDeleted); // add the C-side EntitySet that references cetToBeDeleted (if any) cSideObjectsThatWouldBeDeleted.UnionWith(cetToBeDeleted.GetAntiDependenciesOfType <ConceptualEntitySet>()); // add any Associations referred to by cetToBeDeleted var assocsToBeDeleted = DeleteEntityTypeCommand.GetListOfAssociationsToBeDeleted(cetToBeDeleted); cSideObjectsThatWouldBeDeleted.UnionWith(assocsToBeDeleted); // add any AssociationSets referred to by the Associations foreach (var assoc in assocsToBeDeleted) { cSideObjectsThatWouldBeDeleted.UnionWith(assoc.GetAntiDependenciesOfType <AssociationSet>()); } } if (null != assocToBeDeleted && assocToBeDeleted.EntityModel.IsCSDL) { // add the C-side Association itself cSideObjectsThatWouldBeDeleted.Add(assocToBeDeleted); // add any AssociationSets referred to by the Association cSideObjectsThatWouldBeDeleted.UnionWith(assocToBeDeleted.GetAntiDependenciesOfType <AssociationSet>()); } return(cSideObjectsThatWouldBeDeleted); }
internal override DeleteEFElementCommand GetDeleteCommand() { DeleteEFElementCommand cmd = new DeleteEntityTypeCommand(this); if (cmd == null) { // shouldn't happen, just to be safe throw new InvalidOperationException(); } return cmd; }