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
IList errors = 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
IList errors = 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
- SortedList.cs
- KeyedPriorityQueue.cs
- PluralizationService.cs
- CodeNamespaceImportCollection.cs
- WebPartUtil.cs
- XmlSchemaException.cs
- ExpressionVisitorHelpers.cs
- WsdlParser.cs
- SoapFormatExtensions.cs
- DesignTimeParseData.cs
- ObjectDataSourceFilteringEventArgs.cs
- ContextQuery.cs
- EntityDataSourceState.cs
- Brushes.cs
- SystemParameters.cs
- IISMapPath.cs
- HandlerWithFactory.cs
- InternalMappingException.cs
- EndEvent.cs
- Point4D.cs
- DBSqlParserTable.cs
- DiagnosticsConfiguration.cs
- FileEnumerator.cs
- FileInfo.cs
- AstTree.cs
- VisualTreeUtils.cs
- XmlNamedNodeMap.cs
- UserControl.cs
- DeferredElementTreeState.cs
- TrackingConditionCollection.cs
- DynamicPropertyReader.cs
- TextUtf8RawTextWriter.cs
- DataServiceResponse.cs
- ImageList.cs
- ClientConvert.cs
- InternalCache.cs
- RowToFieldTransformer.cs
- TableLayoutPanelCellPosition.cs
- RequestSecurityTokenForGetBrowserToken.cs
- XmlWrappingWriter.cs
- SafeTimerHandle.cs
- Package.cs
- WorkflowValidationFailedException.cs
- StateBag.cs
- StorageSetMapping.cs
- EventSetterHandlerConverter.cs
- RelationalExpressions.cs
- QuadraticBezierSegment.cs
- ThreadSafeList.cs
- ContractComponent.cs
- CircleHotSpot.cs
- MetaForeignKeyColumn.cs
- FirstMatchCodeGroup.cs
- EventProviderTraceListener.cs
- TextInfo.cs
- CodeAssignStatement.cs
- DBPropSet.cs
- VectorConverter.cs
- ReadOnlyObservableCollection.cs
- ComplexPropertyEntry.cs
- ListViewItemMouseHoverEvent.cs
- HtmlForm.cs
- KeyEventArgs.cs
- ManualResetEvent.cs
- BamlRecordHelper.cs
- Quaternion.cs
- TcpProcessProtocolHandler.cs
- PersonalizationEntry.cs
- StyleSheet.cs
- XmlSchemaNotation.cs
- ColorContext.cs
- FlowDocumentView.cs
- Native.cs
- RoamingStoreFile.cs
- IInstanceTable.cs
- CodeAccessSecurityEngine.cs
- FeatureSupport.cs
- PageRanges.cs
- DtcInterfaces.cs
- DataGridViewComboBoxCell.cs
- TextRunProperties.cs
- UIElementHelper.cs
- ExceptionUtil.cs
- AggregatePushdown.cs
- FloaterBaseParagraph.cs
- ValidationHelpers.cs
- ImageIndexConverter.cs
- WebBodyFormatMessageProperty.cs
- SqlDataSourceCache.cs
- PersistenceProviderDirectory.cs
- WhitespaceRuleLookup.cs
- FormViewRow.cs
- RenderData.cs
- DropShadowEffect.cs
- keycontainerpermission.cs
- RuleInfoComparer.cs
- CompilationUtil.cs
- CacheEntry.cs
- OdbcHandle.cs
- MonthChangedEventArgs.cs