Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DLinq / Dlinq / SqlClient / Common / SqlServer2KCompatibilityCheck.cs / 1 / SqlServer2KCompatibilityCheck.cs
using System;
using System.Collections.ObjectModel;
using System.Text;
namespace System.Data.Linq.SqlClient {
///
/// Methods for checking whethe a query was compatible with the
/// server it will be sent to.
///
static internal class SqlServerCompatibilityCheck {
///
/// Private visitor class checks each node for compatibility annotations.
///
private class Visitor : SqlVisitor {
private SqlProvider.ProviderMode provider;
internal SqlNodeAnnotations annotations;
internal Visitor(SqlProvider.ProviderMode provider) {
this.provider = provider;
}
///
/// The reasons why this query is not 2K compatible.
///
internal Collection reasons = new Collection();
internal override SqlNode Visit(SqlNode node) {
if (annotations.NodeIsAnnotated(node)) {
foreach (SqlNodeAnnotation annotation in annotations.Get(node)) {
SqlServerCompatibilityAnnotation ssca = annotation as SqlServerCompatibilityAnnotation;
if (ssca != null && ssca.AppliesTo(provider)) {
reasons.Add(annotation.Message);
}
}
}
return base.Visit(node);
}
}
///
/// Checks whether the given node is supported on the given server.
///
internal static void ThrowIfUnsupported(SqlNode node, SqlNodeAnnotations annotations, SqlProvider.ProviderMode provider) {
// Check to see whether there's at least one SqlServerCompatibilityAnnotation.
if (annotations.HasAnnotationType(typeof(SqlServerCompatibilityAnnotation))) {
Visitor visitor = new Visitor(provider);
visitor.annotations = annotations;
visitor.Visit(node);
// If any messages were recorded, then throw an exception.
if (visitor.reasons.Count > 0) {
throw Error.ExpressionNotSupportedForSqlServerVersion(visitor.reasons);
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Collections.ObjectModel;
using System.Text;
namespace System.Data.Linq.SqlClient {
///
/// Methods for checking whethe a query was compatible with the
/// server it will be sent to.
///
static internal class SqlServerCompatibilityCheck {
///
/// Private visitor class checks each node for compatibility annotations.
///
private class Visitor : SqlVisitor {
private SqlProvider.ProviderMode provider;
internal SqlNodeAnnotations annotations;
internal Visitor(SqlProvider.ProviderMode provider) {
this.provider = provider;
}
///
/// The reasons why this query is not 2K compatible.
///
internal Collection reasons = new Collection();
internal override SqlNode Visit(SqlNode node) {
if (annotations.NodeIsAnnotated(node)) {
foreach (SqlNodeAnnotation annotation in annotations.Get(node)) {
SqlServerCompatibilityAnnotation ssca = annotation as SqlServerCompatibilityAnnotation;
if (ssca != null && ssca.AppliesTo(provider)) {
reasons.Add(annotation.Message);
}
}
}
return base.Visit(node);
}
}
///
/// Checks whether the given node is supported on the given server.
///
internal static void ThrowIfUnsupported(SqlNode node, SqlNodeAnnotations annotations, SqlProvider.ProviderMode provider) {
// Check to see whether there's at least one SqlServerCompatibilityAnnotation.
if (annotations.HasAnnotationType(typeof(SqlServerCompatibilityAnnotation))) {
Visitor visitor = new Visitor(provider);
visitor.annotations = annotations;
visitor.Visit(node);
// If any messages were recorded, then throw an exception.
if (visitor.reasons.Count > 0) {
throw Error.ExpressionNotSupportedForSqlServerVersion(visitor.reasons);
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BrowserCapabilitiesCompiler.cs
- Activator.cs
- Stylesheet.cs
- Enum.cs
- Configuration.cs
- StatusBarAutomationPeer.cs
- EncodingFallbackAwareXmlTextWriter.cs
- DetailsViewInsertedEventArgs.cs
- TreeViewCancelEvent.cs
- TextViewSelectionProcessor.cs
- Visual.cs
- AutomationPeer.cs
- filewebresponse.cs
- DashStyle.cs
- Image.cs
- SyncOperationState.cs
- clipboard.cs
- MarshalByValueComponent.cs
- TaskbarItemInfo.cs
- ConnectionPointCookie.cs
- MenuEventArgs.cs
- CounterSample.cs
- MappingMetadataHelper.cs
- XmlSerializationReader.cs
- mediaclock.cs
- XmlCompatibilityReader.cs
- Inflater.cs
- TraceProvider.cs
- httpstaticobjectscollection.cs
- AccessibleObject.cs
- TabRenderer.cs
- FixedSOMLineRanges.cs
- Environment.cs
- Interlocked.cs
- Soap.cs
- RegexRunner.cs
- AsyncWaitHandle.cs
- RadialGradientBrush.cs
- XamlStream.cs
- XmlUrlResolver.cs
- DataGridColumn.cs
- BitmapEffectGeneralTransform.cs
- SqlErrorCollection.cs
- mediaeventargs.cs
- Literal.cs
- TraceUtility.cs
- XsltLoader.cs
- Int64AnimationBase.cs
- XmlDictionaryReaderQuotas.cs
- XmlCountingReader.cs
- LoginUtil.cs
- RequestCacheEntry.cs
- _KerberosClient.cs
- ControlIdConverter.cs
- DataTableNameHandler.cs
- IdentityReference.cs
- XAMLParseException.cs
- embossbitmapeffect.cs
- BackgroundWorker.cs
- XmlSerializerNamespaces.cs
- _SSPIWrapper.cs
- TextDecorations.cs
- TriggerActionCollection.cs
- LightweightCodeGenerator.cs
- OneOfConst.cs
- Dispatcher.cs
- RegexReplacement.cs
- MsmqIntegrationBindingCollectionElement.cs
- Quaternion.cs
- ShapingEngine.cs
- TileBrush.cs
- WebPartsPersonalizationAuthorization.cs
- ThreadPool.cs
- ApplicationDirectoryMembershipCondition.cs
- EventQueueState.cs
- CommandDesigner.cs
- DigitShape.cs
- PackageProperties.cs
- RootProfilePropertySettingsCollection.cs
- DoubleCollection.cs
- Math.cs
- PathGradientBrush.cs
- ResourceExpression.cs
- SqlProviderManifest.cs
- BrowserDefinition.cs
- LostFocusEventManager.cs
- StateDesigner.LayoutSelectionGlyph.cs
- ThrowHelper.cs
- TemplateNodeContextMenu.cs
- EditorZone.cs
- ClaimSet.cs
- SimpleMailWebEventProvider.cs
- TdsParserHelperClasses.cs
- Publisher.cs
- RestHandlerFactory.cs
- AddInBase.cs
- BulletedList.cs
- GroupByExpressionRewriter.cs
- StringFreezingAttribute.cs
- BitmapFrame.cs