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 string GetSchemaFromRuntimeModelRoot(EFRuntimeModelRoot modelRoot)
        {
            Debug.Assert(modelRoot != null, "EFRuntimeModelROot is null ");
            var sb = new StringBuilder();

            Debug.Assert(
                modelRoot != null && modelRoot.XElement != null,
                "Could not find the runtime model root or its XElement in GetSchemaFromRuntimeModelRoot");
            if (modelRoot != null &&
                modelRoot.XElement != null)
            {
                using (var writer = new StringWriter(sb, CultureInfo.CurrentCulture))
                {
                    modelRoot.XElement.Save(writer);
                }
            }

            return(sb.ToString());
        }
        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);
        }