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
- DmlSqlGenerator.cs
- SqlBinder.cs
- HitTestResult.cs
- ListViewItem.cs
- PnrpPermission.cs
- Int32Rect.cs
- ComponentEvent.cs
- WsdlParser.cs
- TabPanel.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- PropertyDescriptorGridEntry.cs
- XmlSchemaCompilationSettings.cs
- HtmlControlPersistable.cs
- ReadOnlyDataSourceView.cs
- TopClause.cs
- loginstatus.cs
- ContentType.cs
- MissingManifestResourceException.cs
- xdrvalidator.cs
- Property.cs
- SizeConverter.cs
- BamlTreeUpdater.cs
- FormViewRow.cs
- FlowDocumentPaginator.cs
- SynchronizationContext.cs
- RolePrincipal.cs
- ResourceSet.cs
- HwndSourceParameters.cs
- Pen.cs
- ContractTypeNameCollection.cs
- DataGridViewLayoutData.cs
- ToolStripContentPanelDesigner.cs
- IndentedTextWriter.cs
- PropertyGridView.cs
- PhonemeConverter.cs
- AssemblyCacheEntry.cs
- CodeSubDirectoriesCollection.cs
- ToolStripMenuItem.cs
- CqlBlock.cs
- ThemeConfigurationDialog.cs
- SafeNativeMethodsCLR.cs
- ParseChildrenAsPropertiesAttribute.cs
- _AuthenticationState.cs
- BaseResourcesBuildProvider.cs
- DbQueryCommandTree.cs
- ClientSettingsStore.cs
- XMLUtil.cs
- EllipticalNodeOperations.cs
- DomainLiteralReader.cs
- Claim.cs
- TextEffect.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SearchExpression.cs
- Point4D.cs
- ToolStripManager.cs
- ConvertEvent.cs
- ParameterCollectionEditor.cs
- AssociatedControlConverter.cs
- DataObjectAttribute.cs
- MissingMethodException.cs
- Properties.cs
- backend.cs
- CatalogZone.cs
- XmlLinkedNode.cs
- SSmlParser.cs
- MessageBuffer.cs
- EntityUtil.cs
- EncodingConverter.cs
- CheckPair.cs
- TextTrailingCharacterEllipsis.cs
- BeginStoryboard.cs
- SQLSingleStorage.cs
- AlphabeticalEnumConverter.cs
- ResourceReferenceExpression.cs
- WindowPattern.cs
- MessageQueueAccessControlEntry.cs
- CheckBoxFlatAdapter.cs
- CounterSample.cs
- storagemappingitemcollection.viewdictionary.cs
- SqlFormatter.cs
- SafeEventLogWriteHandle.cs
- PartBasedPackageProperties.cs
- PrefixQName.cs
- ExcCanonicalXml.cs
- BamlRecordWriter.cs
- GcSettings.cs
- CachedFontFamily.cs
- PerfCounters.cs
- HostExecutionContextManager.cs
- TimeManager.cs
- ClientTarget.cs
- Triplet.cs
- StaticDataManager.cs
- CodeTypeMember.cs
- SimpleRecyclingCache.cs
- RadioButtonFlatAdapter.cs
- GridViewRow.cs
- RoleManagerEventArgs.cs
- NotImplementedException.cs
- ConnectionStringSettings.cs