Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / AspNet / EntityDesignerBuildProvider.cs / 1305376 / EntityDesignerBuildProvider.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.CodeDom; using System.CodeDom.Compiler; using System.Globalization; using System.IO; using System.Text; using System.Web.Hosting; using System.Web.Compilation; using System.Xml; using System.Data.Metadata.Edm; namespace System.Data.Entity.Design.AspNet { ////// The ASP .NET Build provider for the CSDL in ADO .NET /// /// [BuildProviderAppliesTo(BuildProviderAppliesTo.Code)] public class EntityDesignerBuildProvider : System.Web.Compilation.BuildProvider { ////// Default constructor /// public EntityDesignerBuildProvider() { } ////// We want ASP .NET to always reset the app domain when we have to rebuild /// /// ///public override BuildProviderResultFlags GetResultFlags(CompilerResults results) { return BuildProviderResultFlags.ShutdownAppDomainOnChange; } /// /// Extract the CSDL, SSDL and MSL nodes from the EDMX file and store them /// as embedded resources /// /// public override void GenerateCode(AssemblyBuilder assemblyBuilder) { using (StreamReader edmxInputStream = new StreamReader(VirtualPathProvider.OpenFile(base.VirtualPath))) { // load up an XML document representing the edmx file XmlElement conceptualSchemaElement; XmlElement mappingElement; XmlElement storageSchemaElement; string embedAsResourcePropertyValue; EntityDesignerUtils.ExtractConceptualMappingAndStorageNodes(edmxInputStream, out conceptualSchemaElement, out mappingElement, out storageSchemaElement, out embedAsResourcePropertyValue); if (null == conceptualSchemaElement) { throw new XmlException("No Conceptual Schema node to embed as a resource", null, 0, 0); } if (null == storageSchemaElement) { throw new XmlException("No Storage Schema node to embed as a resource", null, 0, 0); } if (null == mappingElement) { throw new XmlException("No Mapping node to embed as a resource", null, 0, 0); } // construct output paths where the CSDL/MSL/SSDL resources will be placed string virtualPathPrefix = base.VirtualPath.Replace(EntityDesignerUtils._edmxFileExtension, String.Empty); string csdlResourceName = BuildProviderUtils.GetResourceNameForVirtualPath(virtualPathPrefix + XmlConstants.CSpaceSchemaExtension); string ssdlResourceName = BuildProviderUtils.GetResourceNameForVirtualPath(virtualPathPrefix + XmlConstants.SSpaceSchemaExtension); string mslResourceName = BuildProviderUtils.GetResourceNameForVirtualPath(virtualPathPrefix + XmlConstants.CSSpaceSchemaExtension); SetupEmbeddedResource(assemblyBuilder, this, conceptualSchemaElement, csdlResourceName); SetupEmbeddedResource(assemblyBuilder, this, storageSchemaElement, ssdlResourceName); SetupEmbeddedResource(assemblyBuilder, this, mappingElement, mslResourceName); } } private static void SetupEmbeddedResource(AssemblyBuilder assemblyBuilder, BuildProvider prov, XmlElement xmlElement, string resourceName) { using (Stream resStream = assemblyBuilder.CreateEmbeddedResource(prov, resourceName)) { EntityDesignerUtils.OutputXmlElementToStream(xmlElement, resStream); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.CodeDom; using System.CodeDom.Compiler; using System.Globalization; using System.IO; using System.Text; using System.Web.Hosting; using System.Web.Compilation; using System.Xml; using System.Data.Metadata.Edm; namespace System.Data.Entity.Design.AspNet { ////// The ASP .NET Build provider for the CSDL in ADO .NET /// /// [BuildProviderAppliesTo(BuildProviderAppliesTo.Code)] public class EntityDesignerBuildProvider : System.Web.Compilation.BuildProvider { ////// Default constructor /// public EntityDesignerBuildProvider() { } ////// We want ASP .NET to always reset the app domain when we have to rebuild /// /// ///public override BuildProviderResultFlags GetResultFlags(CompilerResults results) { return BuildProviderResultFlags.ShutdownAppDomainOnChange; } /// /// Extract the CSDL, SSDL and MSL nodes from the EDMX file and store them /// as embedded resources /// /// public override void GenerateCode(AssemblyBuilder assemblyBuilder) { using (StreamReader edmxInputStream = new StreamReader(VirtualPathProvider.OpenFile(base.VirtualPath))) { // load up an XML document representing the edmx file XmlElement conceptualSchemaElement; XmlElement mappingElement; XmlElement storageSchemaElement; string embedAsResourcePropertyValue; EntityDesignerUtils.ExtractConceptualMappingAndStorageNodes(edmxInputStream, out conceptualSchemaElement, out mappingElement, out storageSchemaElement, out embedAsResourcePropertyValue); if (null == conceptualSchemaElement) { throw new XmlException("No Conceptual Schema node to embed as a resource", null, 0, 0); } if (null == storageSchemaElement) { throw new XmlException("No Storage Schema node to embed as a resource", null, 0, 0); } if (null == mappingElement) { throw new XmlException("No Mapping node to embed as a resource", null, 0, 0); } // construct output paths where the CSDL/MSL/SSDL resources will be placed string virtualPathPrefix = base.VirtualPath.Replace(EntityDesignerUtils._edmxFileExtension, String.Empty); string csdlResourceName = BuildProviderUtils.GetResourceNameForVirtualPath(virtualPathPrefix + XmlConstants.CSpaceSchemaExtension); string ssdlResourceName = BuildProviderUtils.GetResourceNameForVirtualPath(virtualPathPrefix + XmlConstants.SSpaceSchemaExtension); string mslResourceName = BuildProviderUtils.GetResourceNameForVirtualPath(virtualPathPrefix + XmlConstants.CSSpaceSchemaExtension); SetupEmbeddedResource(assemblyBuilder, this, conceptualSchemaElement, csdlResourceName); SetupEmbeddedResource(assemblyBuilder, this, storageSchemaElement, ssdlResourceName); SetupEmbeddedResource(assemblyBuilder, this, mappingElement, mslResourceName); } } private static void SetupEmbeddedResource(AssemblyBuilder assemblyBuilder, BuildProvider prov, XmlElement xmlElement, string resourceName) { using (Stream resStream = assemblyBuilder.CreateEmbeddedResource(prov, resourceName)) { EntityDesignerUtils.OutputXmlElementToStream(xmlElement, resStream); } } } } // 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
- ProxyWebPart.cs
- UIInitializationException.cs
- HttpCapabilitiesBase.cs
- Effect.cs
- RenderData.cs
- ButtonPopupAdapter.cs
- TimeStampChecker.cs
- TreeViewImageIndexConverter.cs
- TimeSpanStorage.cs
- SessionStateUtil.cs
- Viewport3DAutomationPeer.cs
- StreamResourceInfo.cs
- TextSelectionHighlightLayer.cs
- SerializationInfoEnumerator.cs
- Message.cs
- KeyGestureConverter.cs
- ListDesigner.cs
- HitTestWithPointDrawingContextWalker.cs
- UniqueEventHelper.cs
- Stack.cs
- SystemWebCachingSectionGroup.cs
- RecordConverter.cs
- RenderingEventArgs.cs
- BasicDesignerLoader.cs
- UIntPtr.cs
- FilterQueryOptionExpression.cs
- XmlSchemaComplexContentRestriction.cs
- TextureBrush.cs
- DeclaredTypeElement.cs
- NetSectionGroup.cs
- MD5Cng.cs
- URIFormatException.cs
- HttpCacheVaryByContentEncodings.cs
- Internal.cs
- XPathLexer.cs
- CachedFontFamily.cs
- DecoderExceptionFallback.cs
- SystemIPv4InterfaceProperties.cs
- ExtendedProperty.cs
- LogWriteRestartAreaAsyncResult.cs
- KernelTypeValidation.cs
- InvokerUtil.cs
- HelloMessageApril2005.cs
- DetailsViewUpdatedEventArgs.cs
- HtmlInputPassword.cs
- SearchForVirtualItemEventArgs.cs
- CompositeFontInfo.cs
- CodeDirectionExpression.cs
- ComponentTray.cs
- DiscreteKeyFrames.cs
- AccessViolationException.cs
- ChooseAction.cs
- UserControlParser.cs
- CustomAttribute.cs
- SqlInternalConnectionSmi.cs
- FormViewRow.cs
- ArrayList.cs
- LiteralDesigner.cs
- IPGlobalProperties.cs
- FaultException.cs
- RootBrowserWindow.cs
- SelectionHighlightInfo.cs
- DbParameterHelper.cs
- TemplateLookupAction.cs
- ColorMap.cs
- Encoding.cs
- FlowLayoutPanel.cs
- SmiMetaDataProperty.cs
- ExtensionWindow.cs
- SafeCloseHandleCritical.cs
- SQLInt32Storage.cs
- Menu.cs
- DataGridColumnEventArgs.cs
- SoapIgnoreAttribute.cs
- VoiceChangeEventArgs.cs
- HttpWebRequestElement.cs
- VisualTreeHelper.cs
- ScrollPattern.cs
- ReadOnlyCollectionBuilder.cs
- RsaSecurityTokenAuthenticator.cs
- StateDesigner.Helpers.cs
- InputQueue.cs
- PerfCounters.cs
- MethodBuilder.cs
- DocumentApplicationJournalEntry.cs
- ListBindingHelper.cs
- ItemType.cs
- CommonObjectSecurity.cs
- StringDictionary.cs
- XmlHelper.cs
- DesignerActionMethodItem.cs
- AuthenticateEventArgs.cs
- PointConverter.cs
- RestClientProxyHandler.cs
- ToolStripItemRenderEventArgs.cs
- DataGridViewRowConverter.cs
- DynamicMethod.cs
- TransactionScopeDesigner.cs
- DbConnectionFactory.cs
- TryCatch.cs