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
- InfoCardKeyedHashAlgorithm.cs
- Block.cs
- objectquery_tresulttype.cs
- RtfToXamlReader.cs
- Renderer.cs
- BinHexEncoding.cs
- ExclusiveHandle.cs
- ErrorFormatterPage.cs
- StringCollectionMarkupSerializer.cs
- XmlAttributeCache.cs
- ConfigUtil.cs
- SecurityPermission.cs
- BitmapMetadataBlob.cs
- Int64Animation.cs
- MessageQueueEnumerator.cs
- X509AudioLogo.cs
- StorageBasedPackageProperties.cs
- HealthMonitoringSectionHelper.cs
- SmtpCommands.cs
- SQLInt32.cs
- TileModeValidation.cs
- ProvidersHelper.cs
- WindowsMenu.cs
- _AutoWebProxyScriptHelper.cs
- GlobalId.cs
- FillErrorEventArgs.cs
- FormViewDeleteEventArgs.cs
- XmlToDatasetMap.cs
- WindowsIPAddress.cs
- TrimSurroundingWhitespaceAttribute.cs
- BufferedGraphics.cs
- ConfigXmlSignificantWhitespace.cs
- RemotingAttributes.cs
- Scene3D.cs
- ValidatorCollection.cs
- TextEditorLists.cs
- ImplicitInputBrush.cs
- SemaphoreFullException.cs
- GridView.cs
- SpecialTypeDataContract.cs
- ElementProxy.cs
- DropAnimation.xaml.cs
- TextEditorSpelling.cs
- ZoneMembershipCondition.cs
- SafeFindHandle.cs
- CryptoApi.cs
- BitmapImage.cs
- PrivacyNoticeBindingElementImporter.cs
- ClientScriptManagerWrapper.cs
- BindUriHelper.cs
- PartManifestEntry.cs
- ContentPlaceHolder.cs
- TreeNode.cs
- XmlElement.cs
- BoolExpression.cs
- PeerCollaborationPermission.cs
- ByteStack.cs
- ExtentCqlBlock.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- CommonDialog.cs
- ValidationErrorCollection.cs
- DataKey.cs
- TypeForwardedToAttribute.cs
- ListControl.cs
- ItemContainerGenerator.cs
- HorizontalAlignConverter.cs
- PackageRelationshipSelector.cs
- EncryptedData.cs
- DirectionalLight.cs
- FixedHyperLink.cs
- Span.cs
- CaseStatementProjectedSlot.cs
- TypefaceMetricsCache.cs
- DesignerRegion.cs
- TransactionManager.cs
- KeyInterop.cs
- AlternationConverter.cs
- LinkButton.cs
- DetailsViewDeletedEventArgs.cs
- ControlOperationInvoker.cs
- DirectoryRedirect.cs
- AbsoluteQuery.cs
- UTF32Encoding.cs
- PeerService.cs
- TemplateBamlRecordReader.cs
- PackWebResponse.cs
- SqlInternalConnectionSmi.cs
- BaseCollection.cs
- TreeNodeConverter.cs
- ClientSponsor.cs
- SoapDocumentServiceAttribute.cs
- mactripleDES.cs
- UrlMappingsSection.cs
- HostedNamedPipeTransportManager.cs
- TreeIterator.cs
- UnmanagedMemoryStreamWrapper.cs
- HtmlTernaryTree.cs
- EtwProvider.cs
- SubstitutionResponseElement.cs
- PropertyStore.cs