private static void ReplaceModelRoot(
            CommandProcessorContext cpc, EFRuntimeModelRoot existingModelRoot, XmlReader newSchemaReader,
            CreateModelRootCallback createModelRootCallback)
        {
            var newModelRootNode = XElement.Load(newSchemaReader);

            // find the XObject representing the existing EFRuntimeModelRoot EFObject
            var existingModelRootNode = existingModelRoot.XObject as XElement;

            Debug.Assert(existingModelRootNode != null, "existingRootXElement is null in ReplaceModelRoot()");

            // find the parent of the existing XObject tied to the EFRuntimeModelRoot
            var existingModelRootParentNode = existingModelRootNode.Parent;

            // delete the old EFRuntimeModelRoot EFObject but do not delete its anti-dependencies
            if (null != existingModelRoot)
            {
                var deleteConceptualModelCommand = new DeleteEFElementCommand(existingModelRoot, true, false);
                DeleteEFElementCommand.DeleteInTransaction(cpc, deleteConceptualModelCommand);
            }

            existingModelRootParentNode.Add(newModelRootNode);

            // Callback to create the EFRuntimeModelRoot EFObject
            createModelRootCallback(newModelRootNode);
        }
        private static void ReplaceModelRoot(
            CommandProcessorContext cpc, EFRuntimeModelRoot existingModelRoot, XmlReader newSchemaReader,
            CreateModelRootCallback createModelRootCallback)
        {
            var newModelRootNode = XElement.Load(newSchemaReader);

            // find the XObject representing the existing EFRuntimeModelRoot EFObject
            var existingModelRootNode = existingModelRoot.XObject as XElement;
            Debug.Assert(existingModelRootNode != null, "existingRootXElement is null in ReplaceModelRoot()");

            // find the parent of the existing XObject tied to the EFRuntimeModelRoot
            var existingModelRootParentNode = existingModelRootNode.Parent;

            // delete the old EFRuntimeModelRoot EFObject but do not delete its anti-dependencies
            if (null != existingModelRoot)
            {
                var deleteConceptualModelCommand = new DeleteEFElementCommand(existingModelRoot, true, false);
                DeleteEFElementCommand.DeleteInTransaction(cpc, deleteConceptualModelCommand);
            }

            existingModelRootParentNode.Add(newModelRootNode);

            // Callback to create the EFRuntimeModelRoot EFObject
            createModelRootCallback(newModelRootNode);
        }