Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / AspNet / EntityModelBuildProvider.cs / 2 / 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;
}
///
///
///
///
public override void GenerateCode(AssemblyBuilder assemblyBuilder)
{
// look at the assembly builder to see which language we should use in the App_Code directory
EntityClassGenerator generator = null;
if (assemblyBuilder.CodeDomProvider.FileExtension.ToLowerInvariant() == "cs")
{
generator = new EntityClassGenerator(LanguageOption.GenerateCSharpCode);
}
else
{
generator = new EntityClassGenerator(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;
}
///
///
///
///
public override void GenerateCode(AssemblyBuilder assemblyBuilder)
{
// look at the assembly builder to see which language we should use in the App_Code directory
EntityClassGenerator generator = null;
if (assemblyBuilder.CodeDomProvider.FileExtension.ToLowerInvariant() == "cs")
{
generator = new EntityClassGenerator(LanguageOption.GenerateCSharpCode);
}
else
{
generator = new EntityClassGenerator(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
- IIS7UserPrincipal.cs
- RegexGroupCollection.cs
- ResXDataNode.cs
- ResourceExpressionBuilder.cs
- _ScatterGatherBuffers.cs
- IsolatedStoragePermission.cs
- XslCompiledTransform.cs
- BaseValidator.cs
- EventManager.cs
- DriveInfo.cs
- ApplicationTrust.cs
- CommonDialog.cs
- XamlSerializerUtil.cs
- BypassElementCollection.cs
- ObjectStateFormatter.cs
- SqlFactory.cs
- DataGridViewColumnCollection.cs
- Permission.cs
- uribuilder.cs
- DesigntimeLicenseContextSerializer.cs
- JumpItem.cs
- AspProxy.cs
- FormViewCommandEventArgs.cs
- LabelEditEvent.cs
- DataControlLinkButton.cs
- SmtpFailedRecipientsException.cs
- SingleAnimationBase.cs
- WebServiceResponse.cs
- RewritingValidator.cs
- ToolTipAutomationPeer.cs
- AssemblyAttributesGoHere.cs
- DataDesignUtil.cs
- DataRelation.cs
- ActivationService.cs
- OutputCacheSettingsSection.cs
- CodeTypeConstructor.cs
- AlphabeticalEnumConverter.cs
- ClientSideProviderDescription.cs
- BasePattern.cs
- SkewTransform.cs
- UseAttributeSetsAction.cs
- BulletedList.cs
- WeakHashtable.cs
- ObjectAnimationBase.cs
- NativeMethods.cs
- BooleanFacetDescriptionElement.cs
- odbcmetadatacolumnnames.cs
- SiteMapDataSourceView.cs
- PersonalizableTypeEntry.cs
- RawStylusInput.cs
- SecurityContextCookieSerializer.cs
- TextDecorationUnitValidation.cs
- CachedFontFamily.cs
- StylusPointPropertyId.cs
- IdleTimeoutMonitor.cs
- IdentitySection.cs
- XmlAttributeOverrides.cs
- RangeValidator.cs
- SizeFConverter.cs
- WorkflowServiceHost.cs
- Point3DAnimation.cs
- Attributes.cs
- StorageConditionPropertyMapping.cs
- WebRequestModuleElement.cs
- RefExpr.cs
- DependencyPropertyAttribute.cs
- XamlSerializationHelper.cs
- FontSource.cs
- LambdaCompiler.Unary.cs
- XmlStreamStore.cs
- ByeOperationCD1AsyncResult.cs
- NaturalLanguageHyphenator.cs
- String.cs
- Calendar.cs
- RegexCapture.cs
- ElementHostPropertyMap.cs
- dbdatarecord.cs
- AnnotationStore.cs
- WindowsToolbar.cs
- DrawingVisualDrawingContext.cs
- Mapping.cs
- BinaryNode.cs
- TCPClient.cs
- RangeContentEnumerator.cs
- Misc.cs
- ExpressionCopier.cs
- LazyTextWriterCreator.cs
- XmlSchemaException.cs
- LogLogRecordEnumerator.cs
- IndicCharClassifier.cs
- EdmItemCollection.cs
- DataGridViewComboBoxCell.cs
- PrintPreviewDialog.cs
- PropertyGridView.cs
- ResourceDictionaryCollection.cs
- X509SecurityToken.cs
- HashAlgorithm.cs
- TargetException.cs
- SafeFileMapViewHandle.cs
- TypeConstant.cs