Пример #1
0
        // 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);
        }
Пример #2
0
 internal override DeleteEFElementCommand GetDeleteCommand()
 {
     DeleteEFElementCommand cmd = new DeleteEntityTypeCommand(this);
     if (cmd == null)
     {
         // shouldn't happen, just to be safe
         throw new InvalidOperationException();
     }
     return cmd;
 }