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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TraceProvider.cs
- XmlDataSourceView.cs
- TransportConfigurationTypeElement.cs
- PartitionResolver.cs
- Annotation.cs
- ActivityExecutorSurrogate.cs
- BitHelper.cs
- DataGridViewToolTip.cs
- IISMapPath.cs
- PnrpPermission.cs
- infer.cs
- JsonFormatReaderGenerator.cs
- BrowserDefinitionCollection.cs
- XmlHierarchicalEnumerable.cs
- SqlDelegatedTransaction.cs
- TrimSurroundingWhitespaceAttribute.cs
- PrefixQName.cs
- DbQueryCommandTree.cs
- ClassValidator.cs
- TailCallAnalyzer.cs
- BasicExpressionVisitor.cs
- ErrorEventArgs.cs
- ProcessStartInfo.cs
- cookiecontainer.cs
- DefaultMergeHelper.cs
- Viewport2DVisual3D.cs
- MonikerSyntaxException.cs
- VariableExpressionConverter.cs
- TrustManagerPromptUI.cs
- _CommandStream.cs
- RefreshPropertiesAttribute.cs
- ScalarType.cs
- GatewayDefinition.cs
- errorpatternmatcher.cs
- ListBoxChrome.cs
- ValueChangedEventManager.cs
- PackageController.cs
- SizeAnimationClockResource.cs
- ShaderRenderModeValidation.cs
- OperationAbortedException.cs
- Debug.cs
- TextBoxBase.cs
- EncryptedReference.cs
- HtmlControlPersistable.cs
- QuaternionAnimation.cs
- PtsPage.cs
- TextPointerBase.cs
- ScrollContentPresenter.cs
- PersonalizableTypeEntry.cs
- WebPartZone.cs
- XmlDocumentViewSchema.cs
- CodeDelegateInvokeExpression.cs
- TypeExtensionConverter.cs
- FormViewInsertEventArgs.cs
- _ContextAwareResult.cs
- SQLSingleStorage.cs
- NTAccount.cs
- DataGridViewTopLeftHeaderCell.cs
- SingleAnimationBase.cs
- TextBox.cs
- LogEntryHeaderv1Deserializer.cs
- ProfileSettings.cs
- Canvas.cs
- TransactionManagerProxy.cs
- CodeAccessSecurityEngine.cs
- Symbol.cs
- WeakReferenceEnumerator.cs
- SqlFacetAttribute.cs
- PropertyChangedEventArgs.cs
- OleDbException.cs
- ProcessHostServerConfig.cs
- ReferenceEqualityComparer.cs
- HttpListenerPrefixCollection.cs
- ExpressionVisitor.cs
- FrameDimension.cs
- RegexGroupCollection.cs
- AnchorEditor.cs
- XPathDescendantIterator.cs
- Stopwatch.cs
- RegexMatch.cs
- PanelDesigner.cs
- WeakEventTable.cs
- CellIdBoolean.cs
- AsyncResult.cs
- FullTrustAssembly.cs
- TemplateBuilder.cs
- WbemProvider.cs
- QilFactory.cs
- RangeValuePatternIdentifiers.cs
- MachinePropertyVariants.cs
- SelectionManager.cs
- CodeIterationStatement.cs
- COM2Enum.cs
- ReadingWritingEntityEventArgs.cs
- TextContainerChangedEventArgs.cs
- XmlIgnoreAttribute.cs
- XmlArrayItemAttribute.cs
- MaterialGroup.cs
- TextTreeUndo.cs
- FixedTextView.cs