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
- ForEachAction.cs
- panel.cs
- StaticExtension.cs
- SettingsContext.cs
- TaskHelper.cs
- CopyOnWriteList.cs
- PlainXmlSerializer.cs
- ResXResourceWriter.cs
- BitmapCodecInfoInternal.cs
- DependentList.cs
- NetTcpSectionData.cs
- OdbcRowUpdatingEvent.cs
- HotSpotCollection.cs
- EmissiveMaterial.cs
- ObsoleteAttribute.cs
- OdbcHandle.cs
- EmptyQuery.cs
- TaskCanceledException.cs
- SigningCredentials.cs
- ComAdminWrapper.cs
- ToolboxDataAttribute.cs
- MediaPlayerState.cs
- Attribute.cs
- TextEndOfParagraph.cs
- PeerToPeerException.cs
- Iis7Helper.cs
- ErrorHandlingReceiver.cs
- WebRequestModulesSection.cs
- _AcceptOverlappedAsyncResult.cs
- QueryCacheEntry.cs
- NonVisualControlAttribute.cs
- EventLogger.cs
- UnsafeNativeMethods.cs
- Verify.cs
- SourceChangedEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- LineServicesCallbacks.cs
- BinaryObjectReader.cs
- SelectionEditingBehavior.cs
- Visual.cs
- ErrorInfoXmlDocument.cs
- PropertyInfoSet.cs
- DataGridLinkButton.cs
- DataSetMappper.cs
- RequiredFieldValidator.cs
- StringAnimationBase.cs
- Compilation.cs
- MergeEnumerator.cs
- Calendar.cs
- AsyncDataRequest.cs
- TemplatedControlDesigner.cs
- CancelAsyncOperationRequest.cs
- EdgeProfileValidation.cs
- ProfileGroupSettingsCollection.cs
- MachineKeyConverter.cs
- ScriptReferenceBase.cs
- WindowsScrollBarBits.cs
- PersonalizationEntry.cs
- CreateUserWizardStep.cs
- DataBoundControlHelper.cs
- ColorConverter.cs
- DependencyPropertyConverter.cs
- SQLChars.cs
- OleDbEnumerator.cs
- SiteMapNodeCollection.cs
- CapabilitiesRule.cs
- TimeSpanMinutesConverter.cs
- DataBinding.cs
- ResourceContainer.cs
- DataContractAttribute.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- GridView.cs
- EffectiveValueEntry.cs
- ExpressionDumper.cs
- WindowsTokenRoleProvider.cs
- SchemaTypeEmitter.cs
- SplitterEvent.cs
- FormViewAutoFormat.cs
- ProviderConnectionPointCollection.cs
- ExpressionEditorAttribute.cs
- WebScriptEndpoint.cs
- DecoderExceptionFallback.cs
- DeflateEmulationStream.cs
- LineSegment.cs
- TextRangeAdaptor.cs
- SqlCacheDependencyDatabaseCollection.cs
- GeneralTransform3DGroup.cs
- RuleSettingsCollection.cs
- GlobalEventManager.cs
- Blend.cs
- Flowchart.cs
- RemoveStoryboard.cs
- DrawingGroup.cs
- EncodingDataItem.cs
- ViewValidator.cs
- DispatcherExceptionFilterEventArgs.cs
- DataGridViewSelectedRowCollection.cs
- DesignerAutoFormat.cs
- DynamicDocumentPaginator.cs
- PeerNameRegistration.cs