Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReaderWriterLockWrapper.cs
- CodeSnippetStatement.cs
- HandlerMappingMemo.cs
- BridgeDataReader.cs
- TagElement.cs
- ScrollContentPresenter.cs
- NetDispatcherFaultException.cs
- WizardStepBase.cs
- SecureEnvironment.cs
- SortKey.cs
- CreateSequence.cs
- SmtpDateTime.cs
- WinInet.cs
- DesignerSerializationManager.cs
- DiscoveryExceptionDictionary.cs
- RawStylusInput.cs
- DbgUtil.cs
- AttributeAction.cs
- UnsafeNativeMethodsTablet.cs
- FontFamilyIdentifier.cs
- ClientSettingsSection.cs
- AesManaged.cs
- SpellerError.cs
- ToolStripTextBox.cs
- ResourceDescriptionAttribute.cs
- RectKeyFrameCollection.cs
- ClientRequest.cs
- LoadMessageLogger.cs
- OAVariantLib.cs
- RemotingSurrogateSelector.cs
- XPathNodeList.cs
- WindowVisualStateTracker.cs
- XmlSerializerAssemblyAttribute.cs
- NativeWindow.cs
- _DigestClient.cs
- CreateInstanceBinder.cs
- ObjectNavigationPropertyMapping.cs
- DoubleAnimationBase.cs
- wgx_render.cs
- ComponentRenameEvent.cs
- TemplateKeyConverter.cs
- UInt64.cs
- ListSortDescriptionCollection.cs
- UIPermission.cs
- XmlSchemaDocumentation.cs
- WindowsScroll.cs
- SymbolMethod.cs
- XmlSchemaComplexContentExtension.cs
- WebPartZoneAutoFormat.cs
- TextSchema.cs
- Vector3D.cs
- TdsParserStaticMethods.cs
- KeyedHashAlgorithm.cs
- RouteItem.cs
- WebRequestModuleElement.cs
- WebServicesSection.cs
- UnitySerializationHolder.cs
- RangeContentEnumerator.cs
- AssemblyNameProxy.cs
- Documentation.cs
- PageBreakRecord.cs
- TriggerAction.cs
- codemethodreferenceexpression.cs
- StandardTransformFactory.cs
- ToolStripDropDownItem.cs
- CngProvider.cs
- ProgressBarAutomationPeer.cs
- PipelineModuleStepContainer.cs
- DrawingServices.cs
- KerberosRequestorSecurityToken.cs
- CharUnicodeInfo.cs
- DirectionalLight.cs
- DataTablePropertyDescriptor.cs
- AssociationType.cs
- ProfessionalColorTable.cs
- MouseActionValueSerializer.cs
- ChameleonKey.cs
- NonBatchDirectoryCompiler.cs
- TreeNodeBindingCollection.cs
- ManagedFilter.cs
- smtppermission.cs
- ProviderConnectionPointCollection.cs
- ToolStrip.cs
- HttpResponse.cs
- CommonObjectSecurity.cs
- WindowsClaimSet.cs
- AssertFilter.cs
- OracleBoolean.cs
- HttpHandler.cs
- PropertiesTab.cs
- unsafenativemethodsother.cs
- PipelineModuleStepContainer.cs
- URIFormatException.cs
- Utils.cs
- SqlExpander.cs
- TransformerTypeCollection.cs
- XamlFilter.cs
- XmlTextReaderImplHelpers.cs
- ExpressionConverter.cs
- MetadataUtilsSmi.cs