Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / AspNet / EntityModelBuildProvider.cs / 1305376 / EntityModelBuildProvider.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.CodeDom; using System.CodeDom.Compiler; using System.Globalization; using System.IO; using System.Web; using System.Web.Hosting; using System.Web.Compilation; using System.Xml; using System.Data.Entity.Design; 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 EntityModelBuildProvider : System.Web.Compilation.BuildProvider { ////// Default constructor /// public EntityModelBuildProvider() { } ////// We want ASP .NET to always reset the app domain when we have to rebuild /// /// ///public override BuildProviderResultFlags GetResultFlags(CompilerResults results) { return BuildProviderResultFlags.ShutdownAppDomainOnChange; } /// /// /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] public override void GenerateCode(AssemblyBuilder assemblyBuilder) { // look at the assembly builder to see which language we should use in the App_Code directory EntityCodeGenerator generator = null; if (assemblyBuilder.CodeDomProvider.FileExtension.ToLowerInvariant() == "cs") { generator = new EntityCodeGenerator(LanguageOption.GenerateCSharpCode); } else { generator = new EntityCodeGenerator(LanguageOption.GenerateVBCode); } // generate the code for our CSDL file IListerrors = null; using (XmlReader input = XmlReader.Create(VirtualPathProvider.OpenFile(base.VirtualPath))) { using (StringWriter output = new StringWriter(CultureInfo.InvariantCulture)) { // Read from input and generate into output, put errors in a class member errors = generator.GenerateCode(input, output); if (errors.Count == 0) { output.Flush(); assemblyBuilder.AddCodeCompileUnit(this, new CodeSnippetCompileUnit(output.ToString())); } } } // if there are errors, package this data into XmlExceptions and throw this // if we are in VS, the ASP .NET stack will place this information in the error pane // if we are in the ASP .NET runtime, it will use this information to build the error page if (errors != null && errors.Count > 0) { XmlException inner = null; XmlException outer = null; foreach (EdmSchemaError error in errors) { outer = new XmlException(error.Message, inner, error.Line, error.Column); inner = outer; } throw outer; } BuildProviderUtils.AddArtifactReference(assemblyBuilder, this, base.VirtualPath); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.CodeDom; using System.CodeDom.Compiler; using System.Globalization; using System.IO; using System.Web; using System.Web.Hosting; using System.Web.Compilation; using System.Xml; using System.Data.Entity.Design; 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 EntityModelBuildProvider : System.Web.Compilation.BuildProvider { ////// Default constructor /// public EntityModelBuildProvider() { } ////// We want ASP .NET to always reset the app domain when we have to rebuild /// /// ///public override BuildProviderResultFlags GetResultFlags(CompilerResults results) { return BuildProviderResultFlags.ShutdownAppDomainOnChange; } /// /// /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] public override void GenerateCode(AssemblyBuilder assemblyBuilder) { // look at the assembly builder to see which language we should use in the App_Code directory EntityCodeGenerator generator = null; if (assemblyBuilder.CodeDomProvider.FileExtension.ToLowerInvariant() == "cs") { generator = new EntityCodeGenerator(LanguageOption.GenerateCSharpCode); } else { generator = new EntityCodeGenerator(LanguageOption.GenerateVBCode); } // generate the code for our CSDL file IListerrors = null; using (XmlReader input = XmlReader.Create(VirtualPathProvider.OpenFile(base.VirtualPath))) { using (StringWriter output = new StringWriter(CultureInfo.InvariantCulture)) { // Read from input and generate into output, put errors in a class member errors = generator.GenerateCode(input, output); if (errors.Count == 0) { output.Flush(); assemblyBuilder.AddCodeCompileUnit(this, new CodeSnippetCompileUnit(output.ToString())); } } } // if there are errors, package this data into XmlExceptions and throw this // if we are in VS, the ASP .NET stack will place this information in the error pane // if we are in the ASP .NET runtime, it will use this information to build the error page if (errors != null && errors.Count > 0) { XmlException inner = null; XmlException outer = null; foreach (EdmSchemaError error in errors) { outer = new XmlException(error.Message, inner, error.Line, error.Column); inner = outer; } throw outer; } BuildProviderUtils.AddArtifactReference(assemblyBuilder, this, base.VirtualPath); } } } // 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
- TextViewSelectionProcessor.cs
- SamlConstants.cs
- CompensationExtension.cs
- SecondaryIndexList.cs
- AccessDataSourceView.cs
- TextSimpleMarkerProperties.cs
- CheckBoxList.cs
- SafeArrayTypeMismatchException.cs
- AssemblyBuilder.cs
- _FtpDataStream.cs
- BeginStoryboard.cs
- EncoderReplacementFallback.cs
- DynamicDataResources.Designer.cs
- HtmlEmptyTagControlBuilder.cs
- Camera.cs
- SchemaImporterExtension.cs
- ToolBar.cs
- ModuleBuilderData.cs
- MethodBuilderInstantiation.cs
- PasswordRecoveryAutoFormat.cs
- StylusPointPropertyId.cs
- SQLByteStorage.cs
- ParagraphVisual.cs
- AttachedAnnotation.cs
- RootBrowserWindowAutomationPeer.cs
- StaticExtension.cs
- InvalidDataException.cs
- KeyEvent.cs
- MenuCommands.cs
- InternalTransaction.cs
- PasswordTextContainer.cs
- GeometryGroup.cs
- ShapingWorkspace.cs
- ActiveXHost.cs
- WebZone.cs
- PeerContact.cs
- DBConcurrencyException.cs
- InstanceDataCollection.cs
- XmlUtf8RawTextWriter.cs
- ManagementDateTime.cs
- XmlSchemaType.cs
- HttpCachePolicyElement.cs
- ErrorTableItemStyle.cs
- BoundsDrawingContextWalker.cs
- SchemaImporter.cs
- SoapWriter.cs
- ContainerFilterService.cs
- UnauthorizedWebPart.cs
- DataGridViewMethods.cs
- processwaithandle.cs
- DataMisalignedException.cs
- WindowsPrincipal.cs
- ListBindingHelper.cs
- QilPatternVisitor.cs
- UncommonField.cs
- SessionStateUtil.cs
- JobStaple.cs
- EraserBehavior.cs
- EdmFunctions.cs
- OleDbInfoMessageEvent.cs
- Filter.cs
- FontCacheUtil.cs
- RouteValueExpressionBuilder.cs
- PartitionResolver.cs
- Classification.cs
- LookupBindingPropertiesAttribute.cs
- TCPClient.cs
- WindowsPen.cs
- TemporaryBitmapFile.cs
- MediaContext.cs
- SelectionEditingBehavior.cs
- RightNameExpirationInfoPair.cs
- AbstractDataSvcMapFileLoader.cs
- LoadItemsEventArgs.cs
- XmlProcessingInstruction.cs
- ContentControl.cs
- MappingSource.cs
- ResourceProperty.cs
- StringArrayConverter.cs
- FontResourceCache.cs
- OnOperation.cs
- SymLanguageVendor.cs
- XmlSyndicationContent.cs
- COM2PropertyPageUITypeConverter.cs
- ExpressionVisitorHelpers.cs
- FlowLayout.cs
- IsolatedStorageFileStream.cs
- Util.cs
- SqlInfoMessageEvent.cs
- ReadOnlyMetadataCollection.cs
- WebBrowserNavigatedEventHandler.cs
- NativeMethods.cs
- ScalarType.cs
- ScaleTransform3D.cs
- TagMapCollection.cs
- TabControlDesigner.cs
- URLString.cs
- CustomTokenProvider.cs
- ManagementQuery.cs
- EntityClientCacheEntry.cs