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
- PackageRelationship.cs
- QilSortKey.cs
- DynamicMethod.cs
- WindowsGraphics.cs
- _TimerThread.cs
- CommandHelper.cs
- AccessText.cs
- RegexCharClass.cs
- QilStrConcat.cs
- SliderAutomationPeer.cs
- ClientCultureInfo.cs
- ContextStack.cs
- ObjectDataSource.cs
- ContextProperty.cs
- COM2IPerPropertyBrowsingHandler.cs
- IFlowDocumentViewer.cs
- NavigateEvent.cs
- StrongNameKeyPair.cs
- DataObject.cs
- ErrorWebPart.cs
- OdbcUtils.cs
- ReadOnlyActivityGlyph.cs
- DataSourceXmlClassAttribute.cs
- SharedUtils.cs
- SectionUpdates.cs
- BufferedGraphicsContext.cs
- FormatPage.cs
- DSGeneratorProblem.cs
- CryptoConfig.cs
- SignedXmlDebugLog.cs
- SortExpressionBuilder.cs
- SHA512.cs
- TransformGroup.cs
- TreeNodeSelectionProcessor.cs
- SqlWebEventProvider.cs
- MatrixCamera.cs
- ByteStack.cs
- propertyentry.cs
- TrackBar.cs
- safePerfProviderHandle.cs
- CqlLexerHelpers.cs
- ThreadWorkerController.cs
- CompositeCollection.cs
- Rect3DConverter.cs
- StickyNoteHelper.cs
- CollectionViewGroup.cs
- BinHexDecoder.cs
- DefaultTraceListener.cs
- ConfigurationCollectionAttribute.cs
- WindowsStatusBar.cs
- UrlMappingsSection.cs
- initElementDictionary.cs
- XmlNodeChangedEventArgs.cs
- CodeObjectCreateExpression.cs
- PasswordTextNavigator.cs
- Socket.cs
- GeneratedContractType.cs
- NamedPermissionSet.cs
- ExpressionConverter.cs
- Vector3D.cs
- UdpTransportSettings.cs
- Propagator.JoinPropagator.cs
- ImageCodecInfoPrivate.cs
- XPathDocument.cs
- FixedNode.cs
- DbFunctionCommandTree.cs
- WebRequest.cs
- BaseValidator.cs
- InstallerTypeAttribute.cs
- GenericWebPart.cs
- TreeNodeEventArgs.cs
- NonClientArea.cs
- FloatMinMaxAggregationOperator.cs
- MeasureData.cs
- Win32PrintDialog.cs
- XamlStyleSerializer.cs
- TextTreeUndoUnit.cs
- CaseInsensitiveComparer.cs
- HtmlForm.cs
- SegmentInfo.cs
- FakeModelItemImpl.cs
- ChannelDemuxer.cs
- SimpleWebHandlerParser.cs
- SerializationHelper.cs
- EventDescriptor.cs
- ObjectDataSource.cs
- NegationPusher.cs
- StringConcat.cs
- BamlTreeUpdater.cs
- SecurityDocument.cs
- PersonalizationStateQuery.cs
- DataGridViewColumnTypePicker.cs
- WorkflowEventArgs.cs
- ErrorFormatter.cs
- DataSourceControl.cs
- OleDbRowUpdatingEvent.cs
- EventTask.cs
- SHA384Managed.cs
- ClientSideProviderDescription.cs
- InstanceStore.cs