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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BulletedList.cs
- ExpressionPrinter.cs
- DependencyPropertyValueSerializer.cs
- DataRowChangeEvent.cs
- BasicHttpSecurityElement.cs
- XmlSecureResolver.cs
- LinqToSqlWrapper.cs
- XmlEncoding.cs
- ReachVisualSerializerAsync.cs
- ConfigurationProviderException.cs
- VisualStyleRenderer.cs
- TextBreakpoint.cs
- OptimisticConcurrencyException.cs
- ToolStripSeparator.cs
- TogglePatternIdentifiers.cs
- QilFunction.cs
- AmbiguousMatchException.cs
- __ComObject.cs
- RoutingExtensionElement.cs
- PropertyOverridesTypeEditor.cs
- WebResourceAttribute.cs
- ConfigurationSection.cs
- NonBatchDirectoryCompiler.cs
- NetMsmqBindingCollectionElement.cs
- SqlHelper.cs
- VirtualPathProvider.cs
- ReadOnlyDataSourceView.cs
- SqlTypesSchemaImporter.cs
- HttpRuntimeSection.cs
- NavigationFailedEventArgs.cs
- ToolStripRendererSwitcher.cs
- HttpApplicationFactory.cs
- KeyedHashAlgorithm.cs
- HtmlInputFile.cs
- ProfilePropertySettingsCollection.cs
- DataGridViewDataConnection.cs
- TypeLoader.cs
- DecimalFormatter.cs
- UTF8Encoding.cs
- Dispatcher.cs
- TargetInvocationException.cs
- DesignTable.cs
- EntityViewGenerationAttribute.cs
- ViewCellRelation.cs
- MetadataCacheItem.cs
- RegexCharClass.cs
- InstanceHandleReference.cs
- bidPrivateBase.cs
- Collection.cs
- TemplateInstanceAttribute.cs
- AccessDataSource.cs
- QilReference.cs
- NumericExpr.cs
- TextRange.cs
- QuaternionConverter.cs
- SamlAssertion.cs
- TimeSpan.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- ColorMap.cs
- HijriCalendar.cs
- XmlEntityReference.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- SQLChars.cs
- LiteralControl.cs
- BezierSegment.cs
- ObjectDataSourceStatusEventArgs.cs
- ObjectStateEntry.cs
- CustomSignedXml.cs
- ScriptBehaviorDescriptor.cs
- DnsPermission.cs
- CompiledRegexRunner.cs
- Parameter.cs
- SymmetricAlgorithm.cs
- XPathCompileException.cs
- XamlSerializerUtil.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- CodeChecksumPragma.cs
- SqlFlattener.cs
- ButtonAutomationPeer.cs
- BypassElementCollection.cs
- IriParsingElement.cs
- ItemDragEvent.cs
- StretchValidation.cs
- CharEntityEncoderFallback.cs
- GatewayDefinition.cs
- ProtocolsConfiguration.cs
- BitmapScalingModeValidation.cs
- HttpListenerContext.cs
- PositiveTimeSpanValidator.cs
- CodeAttributeDeclaration.cs
- HttpCacheVary.cs
- EventWaitHandle.cs
- FixedNode.cs
- AutomationPropertyInfo.cs
- QuotedPairReader.cs
- Repeater.cs
- Baml6ConstructorInfo.cs
- ACE.cs
- UserControl.cs
- Vector3D.cs