Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / AspNet / EntityModelBuildProvider.cs / 1 / 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
- RecognitionEventArgs.cs
- KeyInstance.cs
- HtmlEncodedRawTextWriter.cs
- ServicePointManagerElement.cs
- WebPartTransformer.cs
- TextAction.cs
- XPathDescendantIterator.cs
- XmlSerializationReader.cs
- StorageConditionPropertyMapping.cs
- ChtmlImageAdapter.cs
- ApplyImportsAction.cs
- PersonalizablePropertyEntry.cs
- UserControlBuildProvider.cs
- XmlArrayItemAttribute.cs
- PointCollectionConverter.cs
- WebProxyScriptElement.cs
- ViewRendering.cs
- UnsafeNativeMethods.cs
- TextRangeSerialization.cs
- ListControlBoundActionList.cs
- WebPartRestoreVerb.cs
- ControllableStoryboardAction.cs
- ColumnWidthChangingEvent.cs
- PermissionRequestEvidence.cs
- ConnectorEditor.cs
- ArraySet.cs
- DragCompletedEventArgs.cs
- MimeMultiPart.cs
- PathSegment.cs
- GridPattern.cs
- RadialGradientBrush.cs
- ActivityBindForm.Designer.cs
- PropertyCondition.cs
- FocusTracker.cs
- ProxyWebPartConnectionCollection.cs
- ToolZone.cs
- SplineQuaternionKeyFrame.cs
- SoapObjectReader.cs
- EFDataModelProvider.cs
- ISAPIApplicationHost.cs
- UnorderedHashRepartitionStream.cs
- NumberFunctions.cs
- ObfuscationAttribute.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- ReflectionTypeLoadException.cs
- RegexMatch.cs
- IgnoreFlushAndCloseStream.cs
- DataGrid.cs
- Animatable.cs
- Logging.cs
- __Filters.cs
- DataBinder.cs
- ConstraintEnumerator.cs
- ToolTipAutomationPeer.cs
- ContextMenu.cs
- SizeFConverter.cs
- SchemaConstraints.cs
- bidPrivateBase.cs
- LocationFactory.cs
- ViewKeyConstraint.cs
- ManagementDateTime.cs
- PageRanges.cs
- Type.cs
- HtmlShimManager.cs
- RuleRef.cs
- ConsoleKeyInfo.cs
- StringOutput.cs
- LogSwitch.cs
- SocketAddress.cs
- MetaChildrenColumn.cs
- ClrProviderManifest.cs
- OleDbEnumerator.cs
- ConsoleKeyInfo.cs
- WinEventHandler.cs
- PropertyGridEditorPart.cs
- ItemContainerGenerator.cs
- Int16.cs
- OwnerDrawPropertyBag.cs
- WindowsListViewItemCheckBox.cs
- Frame.cs
- MulticastDelegate.cs
- UserNamePasswordValidator.cs
- XsltSettings.cs
- TcpStreams.cs
- SplitContainer.cs
- EdmPropertyAttribute.cs
- ProviderUtil.cs
- DefaultProxySection.cs
- DataGridItemEventArgs.cs
- IPAddressCollection.cs
- ControlBuilder.cs
- RunInstallerAttribute.cs
- ColumnResizeUndoUnit.cs
- MetabaseSettingsIis7.cs
- AliasExpr.cs
- CultureInfoConverter.cs
- Nullable.cs
- IntegerValidator.cs
- PointCollection.cs
- SafeBitVector32.cs