Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / EntityDesignerUtils.cs / 1305376 / 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 { private static readonly EFNamespaceSet v1Namespaces = new EFNamespaceSet { Edmx = "http://schemas.microsoft.com/ado/2007/06/edmx", Csdl = XmlConstants.ModelNamespace_1, Msl = StorageMslConstructs.NamespaceUriV1, Ssdl = XmlConstants.TargetNamespace_1 }; private static readonly EFNamespaceSet v2Namespaces = new EFNamespaceSet { Edmx = "http://schemas.microsoft.com/ado/2008/10/edmx", Csdl = XmlConstants.ModelNamespace_2, Msl = StorageMslConstructs.NamespaceUriV2, Ssdl = XmlConstants.TargetNamespace_2 }; 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); EFNamespaceSet set = v2Namespaces; if (xmlDocument.DocumentElement.NamespaceURI == v1Namespaces.Edmx) { set = v1Namespaces; } XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDocument.NameTable); nsMgr.AddNamespace("edmx", set.Edmx); nsMgr.AddNamespace("edm", set.Csdl); nsMgr.AddNamespace("ssdl", set.Ssdl); nsMgr.AddNamespace("map", set.Msl); // 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(); } } } private struct EFNamespaceSet { public string Edmx; public string Csdl; public string Msl; public string Ssdl; } } } // 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
- MetadataWorkspace.cs
- OdbcHandle.cs
- StrokeRenderer.cs
- AnnotationHelper.cs
- TextFragmentEngine.cs
- SqlNotificationRequest.cs
- XmlSchemaRedefine.cs
- ReadOnlyCollectionBase.cs
- DictationGrammar.cs
- XhtmlBasicPageAdapter.cs
- DecimalStorage.cs
- HttpApplication.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- SqlServices.cs
- PeerApplicationLaunchInfo.cs
- HttpRuntimeSection.cs
- SafeCryptoHandles.cs
- AllMembershipCondition.cs
- DesigntimeLicenseContextSerializer.cs
- BufferedStream.cs
- KnownBoxes.cs
- Crypto.cs
- WorkflowInstanceExtensionCollection.cs
- ExpressionWriter.cs
- TdsParserHelperClasses.cs
- ContentPlaceHolder.cs
- ContentType.cs
- BulletedList.cs
- XmlQueryContext.cs
- LexicalChunk.cs
- Instrumentation.cs
- ColorContext.cs
- TaskFileService.cs
- RoleService.cs
- DataGridViewComboBoxColumn.cs
- CryptoProvider.cs
- HttpListenerPrefixCollection.cs
- ObjectTag.cs
- WebPartTransformerAttribute.cs
- JumpPath.cs
- ApplicationSecurityInfo.cs
- MultiBinding.cs
- HttpCookieCollection.cs
- XmlIlGenerator.cs
- Options.cs
- SchemaLookupTable.cs
- ListBoxItemAutomationPeer.cs
- StructuralObject.cs
- MSAANativeProvider.cs
- UpdateRecord.cs
- JpegBitmapDecoder.cs
- EncryptedReference.cs
- SmiConnection.cs
- SoapAttributeOverrides.cs
- StrokeFIndices.cs
- LogEntrySerializationException.cs
- PrePrepareMethodAttribute.cs
- Point.cs
- HeaderUtility.cs
- wgx_render.cs
- TemplatePropertyEntry.cs
- SimpleHandlerBuildProvider.cs
- IArgumentProvider.cs
- UnsafeNativeMethods.cs
- XmlElement.cs
- OleDbException.cs
- PersonalizationAdministration.cs
- DataSetMappper.cs
- MembershipValidatePasswordEventArgs.cs
- OleDbStruct.cs
- IxmlLineInfo.cs
- DateTimeOffset.cs
- ALinqExpressionVisitor.cs
- StaticContext.cs
- SpotLight.cs
- TreeView.cs
- SettingsBase.cs
- JsonWriterDelegator.cs
- VectorKeyFrameCollection.cs
- InputReportEventArgs.cs
- StorageComplexTypeMapping.cs
- Normalization.cs
- CompilationUtil.cs
- Header.cs
- InternalMappingException.cs
- LinqTreeNodeEvaluator.cs
- hebrewshape.cs
- Win32SafeHandles.cs
- XNameConverter.cs
- EncoderNLS.cs
- EntityDataSourceValidationException.cs
- SessionSwitchEventArgs.cs
- IdentityReference.cs
- CodeAttributeDeclaration.cs
- FontUnit.cs
- OdbcParameterCollection.cs
- CodeDomSerializer.cs
- EventMappingSettings.cs
- GetRecipientRequest.cs
- Pair.cs