Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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 Collectionreasons = 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 Collectionreasons = 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
- ScriptServiceAttribute.cs
- ParameterElement.cs
- QilBinary.cs
- CodeAssignStatement.cs
- DirectoryLocalQuery.cs
- BuildResult.cs
- TextDecorationCollectionConverter.cs
- ManualResetEvent.cs
- SettingsAttributes.cs
- RectangleConverter.cs
- Freezable.cs
- DuplexChannel.cs
- ButtonRenderer.cs
- DefaultAuthorizationContext.cs
- IDispatchConstantAttribute.cs
- SingleTagSectionHandler.cs
- ImageListImageEditor.cs
- DbConnectionPoolCounters.cs
- RangeValuePattern.cs
- VisualBasicImportReference.cs
- TargetInvocationException.cs
- RequestNavigateEventArgs.cs
- ToggleProviderWrapper.cs
- Lasso.cs
- Helpers.cs
- FormDocumentDesigner.cs
- PasswordPropertyTextAttribute.cs
- Invariant.cs
- CodeTypeParameter.cs
- XmlAnyElementAttributes.cs
- DataTemplateKey.cs
- ClassicBorderDecorator.cs
- HtmlString.cs
- SpellerHighlightLayer.cs
- GeometryConverter.cs
- FormViewCommandEventArgs.cs
- RunInstallerAttribute.cs
- SlotInfo.cs
- ProviderMetadataCachedInformation.cs
- ParamArrayAttribute.cs
- XmlConverter.cs
- Invariant.cs
- EnumMember.cs
- DescendantBaseQuery.cs
- XmlAttributeCache.cs
- StorageScalarPropertyMapping.cs
- Keywords.cs
- TemplateKeyConverter.cs
- StringBlob.cs
- ZipIOCentralDirectoryBlock.cs
- SqlDelegatedTransaction.cs
- SqlDataSourceAdvancedOptionsForm.cs
- EntityContainerRelationshipSet.cs
- WebPartDescriptionCollection.cs
- PositiveTimeSpanValidator.cs
- HttpCacheVaryByContentEncodings.cs
- CompilationSection.cs
- RoleService.cs
- SqlClientWrapperSmiStream.cs
- DebugInfoExpression.cs
- PassportAuthentication.cs
- ProgressBarRenderer.cs
- MasterPageCodeDomTreeGenerator.cs
- CollectionBuilder.cs
- CellConstant.cs
- Config.cs
- InvokeHandlers.cs
- VoiceObjectToken.cs
- CompositeControl.cs
- TreeView.cs
- SizeAnimation.cs
- UniqueEventHelper.cs
- Parameter.cs
- ObjectStateFormatter.cs
- WpfGeneratedKnownTypes.cs
- localization.cs
- ResourceContainer.cs
- X509CertificateClaimSet.cs
- GroupQuery.cs
- ObjectStateFormatter.cs
- TextFormatterContext.cs
- DefaultObjectMappingItemCollection.cs
- DrawingContextWalker.cs
- BufferBuilder.cs
- EncoderReplacementFallback.cs
- WindowsFont.cs
- URLString.cs
- DataTransferEventArgs.cs
- DrawToolTipEventArgs.cs
- BufferedGenericXmlSecurityToken.cs
- tooltip.cs
- uribuilder.cs
- AvtEvent.cs
- EditCommandColumn.cs
- ExtendedProperty.cs
- CheckoutException.cs
- Collection.cs
- InternalRelationshipCollection.cs
- XmlArrayAttribute.cs
- ApplicationProxyInternal.cs