EntityDesignerUtils.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / EntityDesignerUtils.cs / 1 / EntityDesignerUtils.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner       [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System.IO; 
using System.Text;
using System.Xml;
using System.Data.Metadata.Edm;
using System.Data.Mapping; 

namespace System.Data.Entity.Design 
{ 
    internal static class EntityDesignerUtils
    { 
        internal static readonly string _edmxNamespace = "http://schemas.microsoft.com/ado/2007/06/edmx";
        internal static readonly string _edmxFileExtension = ".edmx";

        ///  
        /// Extract the Conceptual, Mapping and Storage nodes from an EDMX input streams, and extract the value of the metadataArtifactProcessing property.
        ///  
        ///  
        /// 
        ///  
        /// 
        ///
        internal static void ExtractConceptualMappingAndStorageNodes(StreamReader edmxInputStream,
            out XmlElement conceptualSchemaNode, out XmlElement mappingNode, out XmlElement storageSchemaNode, out string metadataArtifactProcessingValue) 
        {
            // load up an XML document representing the edmx file 
            XmlDocument xmlDocument = new XmlDocument(); 
            xmlDocument.Load(edmxInputStream);
            XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDocument.NameTable); 
            nsMgr.AddNamespace("edmx", _edmxNamespace);
            nsMgr.AddNamespace("edm", XmlConstants.ModelNamespace);
            nsMgr.AddNamespace("ssdl", XmlConstants.TargetNamespace);
            nsMgr.AddNamespace("map", StorageMslConstructs.NamespaceURI); 

            // find the ConceptualModel Schema node 
            conceptualSchemaNode = (XmlElement)xmlDocument.SelectSingleNode( 
                "/edmx:Edmx/edmx:Runtime/edmx:ConceptualModels/edm:Schema", nsMgr);
 
            // find the StorageModel Schema node
            storageSchemaNode = (XmlElement)xmlDocument.SelectSingleNode(
                "/edmx:Edmx/edmx:Runtime/edmx:StorageModels/ssdl:Schema", nsMgr);
 
            // find the Mapping node
            mappingNode = (XmlElement)xmlDocument.SelectSingleNode( 
                "/edmx:Edmx/edmx:Runtime/edmx:Mappings/map:Mapping", nsMgr); 

            // find the Connection node 

            metadataArtifactProcessingValue = String.Empty;
            XmlNodeList connectionProperties = xmlDocument.SelectNodes(
                "/edmx:Edmx/edmx:Designer/edmx:Connection/edmx:DesignerInfoPropertySet/edmx:DesignerProperty", nsMgr); 
            if (connectionProperties != null)
            { 
                foreach (XmlNode propertyNode in connectionProperties) 
                {
                    foreach (XmlAttribute a in propertyNode.Attributes) 
                    {
                        // treat attribute names case-sensitive (since it is xml), but attribute value case-insensitive to be accommodating .
                        if (a.Name.Equals("Name", StringComparison.Ordinal) && a.Value.Equals("MetadataArtifactProcessing", StringComparison.OrdinalIgnoreCase))
                        { 
                            foreach (XmlAttribute a2 in propertyNode.Attributes)
                            { 
                                if (a2.Name.Equals("Value", StringComparison.Ordinal)) 
                                {
                                    metadataArtifactProcessingValue = a2.Value; 
                                    break;
                                }
                            }
                        } 
                    }
                } 
            } 
        }
 
        // utility method to ensure an XmlElement (containing the C, M or S element
        // from the Edmx file) is sent out to a stream in the same format
        internal static void OutputXmlElementToStream(XmlElement xmlElement, Stream stream)
        { 
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Encoding = Encoding.UTF8; 
            settings.Indent = true; 

            // set up output document 
            XmlDocument outputXmlDoc = new XmlDocument();
            XmlNode importedElement = outputXmlDoc.ImportNode(xmlElement, true);
            outputXmlDoc.AppendChild(importedElement);
 
            // write out XmlDocument
            XmlWriter writer = null; 
            try 
            {
                writer = XmlWriter.Create(stream, settings); 
                outputXmlDoc.WriteTo(writer);
            }
            finally
            { 
                if (writer != null) { writer.Close(); }
            } 
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner       [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System.IO; 
using System.Text;
using System.Xml;
using System.Data.Metadata.Edm;
using System.Data.Mapping; 

namespace System.Data.Entity.Design 
{ 
    internal static class EntityDesignerUtils
    { 
        internal static readonly string _edmxNamespace = "http://schemas.microsoft.com/ado/2007/06/edmx";
        internal static readonly string _edmxFileExtension = ".edmx";

        ///  
        /// Extract the Conceptual, Mapping and Storage nodes from an EDMX input streams, and extract the value of the metadataArtifactProcessing property.
        ///  
        ///  
        /// 
        ///  
        /// 
        ///
        internal static void ExtractConceptualMappingAndStorageNodes(StreamReader edmxInputStream,
            out XmlElement conceptualSchemaNode, out XmlElement mappingNode, out XmlElement storageSchemaNode, out string metadataArtifactProcessingValue) 
        {
            // load up an XML document representing the edmx file 
            XmlDocument xmlDocument = new XmlDocument(); 
            xmlDocument.Load(edmxInputStream);
            XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDocument.NameTable); 
            nsMgr.AddNamespace("edmx", _edmxNamespace);
            nsMgr.AddNamespace("edm", XmlConstants.ModelNamespace);
            nsMgr.AddNamespace("ssdl", XmlConstants.TargetNamespace);
            nsMgr.AddNamespace("map", StorageMslConstructs.NamespaceURI); 

            // find the ConceptualModel Schema node 
            conceptualSchemaNode = (XmlElement)xmlDocument.SelectSingleNode( 
                "/edmx:Edmx/edmx:Runtime/edmx:ConceptualModels/edm:Schema", nsMgr);
 
            // find the StorageModel Schema node
            storageSchemaNode = (XmlElement)xmlDocument.SelectSingleNode(
                "/edmx:Edmx/edmx:Runtime/edmx:StorageModels/ssdl:Schema", nsMgr);
 
            // find the Mapping node
            mappingNode = (XmlElement)xmlDocument.SelectSingleNode( 
                "/edmx:Edmx/edmx:Runtime/edmx:Mappings/map:Mapping", nsMgr); 

            // find the Connection node 

            metadataArtifactProcessingValue = String.Empty;
            XmlNodeList connectionProperties = xmlDocument.SelectNodes(
                "/edmx:Edmx/edmx:Designer/edmx:Connection/edmx:DesignerInfoPropertySet/edmx:DesignerProperty", nsMgr); 
            if (connectionProperties != null)
            { 
                foreach (XmlNode propertyNode in connectionProperties) 
                {
                    foreach (XmlAttribute a in propertyNode.Attributes) 
                    {
                        // treat attribute names case-sensitive (since it is xml), but attribute value case-insensitive to be accommodating .
                        if (a.Name.Equals("Name", StringComparison.Ordinal) && a.Value.Equals("MetadataArtifactProcessing", StringComparison.OrdinalIgnoreCase))
                        { 
                            foreach (XmlAttribute a2 in propertyNode.Attributes)
                            { 
                                if (a2.Name.Equals("Value", StringComparison.Ordinal)) 
                                {
                                    metadataArtifactProcessingValue = a2.Value; 
                                    break;
                                }
                            }
                        } 
                    }
                } 
            } 
        }
 
        // utility method to ensure an XmlElement (containing the C, M or S element
        // from the Edmx file) is sent out to a stream in the same format
        internal static void OutputXmlElementToStream(XmlElement xmlElement, Stream stream)
        { 
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Encoding = Encoding.UTF8; 
            settings.Indent = true; 

            // set up output document 
            XmlDocument outputXmlDoc = new XmlDocument();
            XmlNode importedElement = outputXmlDoc.ImportNode(xmlElement, true);
            outputXmlDoc.AppendChild(importedElement);
 
            // write out XmlDocument
            XmlWriter writer = null; 
            try 
            {
                writer = XmlWriter.Create(stream, settings); 
                outputXmlDoc.WriteTo(writer);
            }
            finally
            { 
                if (writer != null) { writer.Close(); }
            } 
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK