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
- DataViewSetting.cs
- IApplicationTrustManager.cs
- QueryableDataSourceHelper.cs
- SQLChars.cs
- ZipFileInfoCollection.cs
- DefaultTextStoreTextComposition.cs
- WindowsGraphicsWrapper.cs
- DetailsViewDeletedEventArgs.cs
- ParamArrayAttribute.cs
- IncrementalCompileAnalyzer.cs
- ToolZoneDesigner.cs
- RegionData.cs
- isolationinterop.cs
- TileModeValidation.cs
- BitmapMetadata.cs
- ExpressionDumper.cs
- IODescriptionAttribute.cs
- MinimizableAttributeTypeConverter.cs
- EdmSchemaAttribute.cs
- ColorConvertedBitmapExtension.cs
- Process.cs
- ActivatableWorkflowsQueryResult.cs
- WebPermission.cs
- NumberFormatInfo.cs
- TextPenaltyModule.cs
- IfAction.cs
- ContactManager.cs
- SQLInt32Storage.cs
- CodeArrayCreateExpression.cs
- SizeConverter.cs
- TrailingSpaceComparer.cs
- WebPartDisplayModeEventArgs.cs
- ThemeConfigurationDialog.cs
- TreeNodeCollectionEditorDialog.cs
- WindowShowOrOpenTracker.cs
- EmptyEnumerator.cs
- UnaryExpression.cs
- InheritanceRules.cs
- EventListener.cs
- ModelEditingScope.cs
- XmlSchemaAll.cs
- DataGrid.cs
- AxWrapperGen.cs
- ReadOnlyNameValueCollection.cs
- OwnerDrawPropertyBag.cs
- CompoundFileDeflateTransform.cs
- TerminateDesigner.cs
- CachedCompositeFamily.cs
- DependencyObjectValidator.cs
- ContentDefinition.cs
- BamlLocalizabilityResolver.cs
- TextBoxAutomationPeer.cs
- TypeLoadException.cs
- AdPostCacheSubstitution.cs
- SQLInt64Storage.cs
- FieldNameLookup.cs
- RepeatBehaviorConverter.cs
- CompensationTokenData.cs
- EventProviderWriter.cs
- ProxyHwnd.cs
- WpfWebRequestHelper.cs
- EventListener.cs
- PrivilegeNotHeldException.cs
- TextUtf8RawTextWriter.cs
- ControlsConfig.cs
- InkCanvasInnerCanvas.cs
- DataObjectPastingEventArgs.cs
- TagPrefixAttribute.cs
- PermissionRequestEvidence.cs
- HttpHandler.cs
- Border.cs
- BaseConfigurationRecord.cs
- SignatureToken.cs
- FontFamilyConverter.cs
- altserialization.cs
- XmlQueryRuntime.cs
- FolderNameEditor.cs
- CryptoApi.cs
- SRGSCompiler.cs
- DescendentsWalker.cs
- BitmapEffect.cs
- AssociatedControlConverter.cs
- DragDropHelper.cs
- ReadWriteSpinLock.cs
- Graphics.cs
- UnmanagedMemoryStream.cs
- XmlSchemaGroupRef.cs
- SoapProcessingBehavior.cs
- NamedObject.cs
- InstanceDataCollection.cs
- SqlInternalConnection.cs
- XamlInterfaces.cs
- DbConnectionOptions.cs
- CustomPopupPlacement.cs
- TablePattern.cs
- EntityConnectionStringBuilder.cs
- ToolCreatedEventArgs.cs
- FamilyMapCollection.cs
- CacheForPrimitiveTypes.cs
- SqlAliaser.cs