Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SR.cs
- SoapIncludeAttribute.cs
- SerializationSectionGroup.cs
- MenuItem.cs
- MappableObjectManager.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- JsonSerializer.cs
- _CookieModule.cs
- PipeStream.cs
- ApplicationSettingsBase.cs
- X509SecurityToken.cs
- PerformanceCounterPermission.cs
- PriorityItem.cs
- SqlMethodAttribute.cs
- ProviderSettingsCollection.cs
- NotificationContext.cs
- WeakReadOnlyCollection.cs
- RankException.cs
- DataTemplate.cs
- ProxyFragment.cs
- ToolboxCategory.cs
- TagElement.cs
- HttpRequestTraceRecord.cs
- IDReferencePropertyAttribute.cs
- FormViewDeletedEventArgs.cs
- MenuItemBinding.cs
- ValidatingReaderNodeData.cs
- ExcCanonicalXml.cs
- OutOfMemoryException.cs
- TcpConnectionPoolSettingsElement.cs
- Trace.cs
- InstanceCreationEditor.cs
- WindowsTab.cs
- CacheMode.cs
- WindowsImpersonationContext.cs
- XmlSchemaObject.cs
- WindowsScrollBar.cs
- RegexGroupCollection.cs
- FormatSettings.cs
- SecurityKeyIdentifier.cs
- CmsInterop.cs
- XmlSchemaParticle.cs
- Thickness.cs
- TableHeaderCell.cs
- PerfCounterSection.cs
- ScriptResourceAttribute.cs
- TextTreeRootNode.cs
- ReflectionUtil.cs
- PrintPageEvent.cs
- ResourceDescriptionAttribute.cs
- PackageRelationshipSelector.cs
- TextTreeUndoUnit.cs
- WebServiceReceiveDesigner.cs
- GrammarBuilderPhrase.cs
- HuffModule.cs
- XmlUnspecifiedAttribute.cs
- XmlUrlEditor.cs
- SqlFlattener.cs
- WorkflowWebHostingModule.cs
- AssemblyUtil.cs
- RC2CryptoServiceProvider.cs
- ExpressionVisitor.cs
- ContainerUIElement3D.cs
- RemotingConfigParser.cs
- InheritedPropertyChangedEventArgs.cs
- GenericQueueSurrogate.cs
- ImageMetadata.cs
- HttpListenerException.cs
- AuthenticationManager.cs
- ActiveDocumentEvent.cs
- ScrollBar.cs
- ConfigurationStrings.cs
- SystemIcmpV4Statistics.cs
- COAUTHINFO.cs
- altserialization.cs
- Model3D.cs
- XmlBinaryReader.cs
- MustUnderstandSoapException.cs
- __Error.cs
- EpmTargetTree.cs
- DbQueryCommandTree.cs
- ToolStripDesignerAvailabilityAttribute.cs
- ACE.cs
- SmiContextFactory.cs
- CornerRadius.cs
- WindowsSysHeader.cs
- MarginCollapsingState.cs
- DrawListViewSubItemEventArgs.cs
- PeerInvitationResponse.cs
- WindowsUpDown.cs
- XmlEntity.cs
- SoapObjectInfo.cs
- StylusCaptureWithinProperty.cs
- NullableDecimalSumAggregationOperator.cs
- VisualStates.cs
- ActivityBuilder.cs
- FrameworkElementFactoryMarkupObject.cs
- DocumentCollection.cs
- TakeOrSkipQueryOperator.cs
- AnnotationComponentManager.cs