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 / AspNet / EntityDesignerBuildProvider.cs / 1 / 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 conceptualVirtualPath = virtualPathPrefix + XmlConstants.CSpaceSchemaExtension; string storageVirtualPath = virtualPathPrefix + XmlConstants.SSpaceSchemaExtension; string mappingVirtualPath = virtualPathPrefix + XmlConstants.CSSpaceSchemaExtension; SetupEmbeddedResource(assemblyBuilder, this, conceptualSchemaElement, conceptualVirtualPath); SetupEmbeddedResource(assemblyBuilder, this, storageSchemaElement, storageVirtualPath); SetupEmbeddedResource(assemblyBuilder, this, mappingElement, mappingVirtualPath); } } private static void SetupEmbeddedResource(AssemblyBuilder assemblyBuilder, BuildProvider prov, XmlElement xmlElement, string resourcePath) { // derive the resource name string name = resourcePath.Replace("/", "."); if (name.StartsWith(".", StringComparison.Ordinal)) { name = name.Substring(1); } using (Stream resStream = assemblyBuilder.CreateEmbeddedResource(prov, name)) { 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 conceptualVirtualPath = virtualPathPrefix + XmlConstants.CSpaceSchemaExtension; string storageVirtualPath = virtualPathPrefix + XmlConstants.SSpaceSchemaExtension; string mappingVirtualPath = virtualPathPrefix + XmlConstants.CSSpaceSchemaExtension; SetupEmbeddedResource(assemblyBuilder, this, conceptualSchemaElement, conceptualVirtualPath); SetupEmbeddedResource(assemblyBuilder, this, storageSchemaElement, storageVirtualPath); SetupEmbeddedResource(assemblyBuilder, this, mappingElement, mappingVirtualPath); } } private static void SetupEmbeddedResource(AssemblyBuilder assemblyBuilder, BuildProvider prov, XmlElement xmlElement, string resourcePath) { // derive the resource name string name = resourcePath.Replace("/", "."); if (name.StartsWith(".", StringComparison.Ordinal)) { name = name.Substring(1); } using (Stream resStream = assemblyBuilder.CreateEmbeddedResource(prov, name)) { 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
- SqlDeflator.cs
- StrongNameKeyPair.cs
- CommonRemoteMemoryBlock.cs
- TextParagraphProperties.cs
- Evidence.cs
- DBSqlParserTableCollection.cs
- HandlerFactoryCache.cs
- MediaTimeline.cs
- AppDomainFactory.cs
- View.cs
- EventLogSession.cs
- FixedSOMPageConstructor.cs
- TextBounds.cs
- StylusEditingBehavior.cs
- XmlDataFileEditor.cs
- PolyLineSegment.cs
- ClientEventManager.cs
- CheckedPointers.cs
- IdentityModelStringsVersion1.cs
- NullableFloatAverageAggregationOperator.cs
- ProcessThreadCollection.cs
- TreeViewCancelEvent.cs
- XmlAnyElementAttributes.cs
- DSASignatureFormatter.cs
- Socket.cs
- ToolStripItemCollection.cs
- UserControlParser.cs
- DataGridSortCommandEventArgs.cs
- Function.cs
- localization.cs
- SerTrace.cs
- SynchronizingStream.cs
- RequiredFieldValidator.cs
- FileEnumerator.cs
- JsonReaderWriterFactory.cs
- FixedSOMFixedBlock.cs
- StreamGeometryContext.cs
- PrivilegeNotHeldException.cs
- PolyLineSegmentFigureLogic.cs
- EastAsianLunisolarCalendar.cs
- RoamingStoreFile.cs
- EntityTemplateUserControl.cs
- HyperLinkField.cs
- DirectionalLight.cs
- SystemInfo.cs
- TypeTypeConverter.cs
- MouseWheelEventArgs.cs
- HatchBrush.cs
- BehaviorEditorPart.cs
- WorkflowCreationContext.cs
- ZoneLinkButton.cs
- FamilyMap.cs
- BrowserDefinitionCollection.cs
- DataGridViewCellEventArgs.cs
- WorkflowQueuingService.cs
- X509CertificateValidator.cs
- DataRelation.cs
- IisTraceWebEventProvider.cs
- OverflowException.cs
- TextureBrush.cs
- RoutingConfiguration.cs
- PersistChildrenAttribute.cs
- DetailsViewCommandEventArgs.cs
- LicenseProviderAttribute.cs
- DiscoveryClientOutputChannel.cs
- CryptoConfig.cs
- PropertyConverter.cs
- GeneralTransformGroup.cs
- ScriptingScriptResourceHandlerSection.cs
- SystemResources.cs
- CatalogPart.cs
- DynamicControlParameter.cs
- XamlSerializerUtil.cs
- VirtualizedItemProviderWrapper.cs
- PropertyChangingEventArgs.cs
- WebReferencesBuildProvider.cs
- XmlTextReaderImpl.cs
- WindowsPrincipal.cs
- DSASignatureDeformatter.cs
- PreProcessInputEventArgs.cs
- SafeFileMapViewHandle.cs
- SystemParameters.cs
- Visual3D.cs
- rsa.cs
- WebPartZoneBase.cs
- PrintEvent.cs
- ComplexTypeEmitter.cs
- ProfileProvider.cs
- DelimitedListTraceListener.cs
- KerberosReceiverSecurityToken.cs
- DBDataPermissionAttribute.cs
- SafeHandle.cs
- XD.cs
- ExtensionSimplifierMarkupObject.cs
- WebPartZoneCollection.cs
- IdnMapping.cs
- ExpressionPrinter.cs
- WebBrowserHelper.cs
- SqlCacheDependencySection.cs
- SmtpLoginAuthenticationModule.cs