Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Common / SqlServer2KCompatibilityCheck.cs / 1305376 / 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
- WeakRefEnumerator.cs
- TypeSemantics.cs
- SystemResources.cs
- ExecutedRoutedEventArgs.cs
- DispatcherTimer.cs
- ConfigurationLocation.cs
- EventBuilder.cs
- TripleDES.cs
- XmlLoader.cs
- PngBitmapDecoder.cs
- DecoderReplacementFallback.cs
- SelectedGridItemChangedEvent.cs
- _PooledStream.cs
- PageCodeDomTreeGenerator.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- CodeGenerator.cs
- StrokeCollection.cs
- ExpandCollapsePattern.cs
- EventLogEntry.cs
- DataGridViewHitTestInfo.cs
- Argument.cs
- DataColumnSelectionConverter.cs
- SqlResolver.cs
- CompleteWizardStep.cs
- KeyboardDevice.cs
- PageHandlerFactory.cs
- TriState.cs
- _NegotiateClient.cs
- MutexSecurity.cs
- WaitHandleCannotBeOpenedException.cs
- MediaPlayerState.cs
- ParallelTimeline.cs
- PartialTrustVisibleAssembliesSection.cs
- DateTimeSerializationSection.cs
- Expr.cs
- BuildManager.cs
- ECDiffieHellmanCngPublicKey.cs
- DBConcurrencyException.cs
- LogEntryHeaderSerializer.cs
- DataControlFieldsEditor.cs
- DoubleCollection.cs
- DataGridViewCellStyleConverter.cs
- WorkItem.cs
- EventLogPermissionAttribute.cs
- NumberFormatter.cs
- TextSpanModifier.cs
- DrawItemEvent.cs
- OAVariantLib.cs
- TextTreeNode.cs
- RemotingServices.cs
- SequentialUshortCollection.cs
- _HeaderInfo.cs
- StartFileNameEditor.cs
- JsonReaderDelegator.cs
- FolderBrowserDialog.cs
- SafeCryptoHandles.cs
- AdCreatedEventArgs.cs
- SqlWriter.cs
- PtsCache.cs
- PointAnimationClockResource.cs
- XmlNamedNodeMap.cs
- CellQuery.cs
- WebHttpDispatchOperationSelector.cs
- WasNotInstalledException.cs
- SecUtil.cs
- RequestCacheManager.cs
- Certificate.cs
- HostProtectionPermission.cs
- FontFamilyConverter.cs
- ComMethodElement.cs
- MSAANativeProvider.cs
- METAHEADER.cs
- SocketException.cs
- DoubleUtil.cs
- DispatcherExceptionEventArgs.cs
- DataSet.cs
- TransformedBitmap.cs
- TransformDescriptor.cs
- ReflectionServiceProvider.cs
- PropertyManager.cs
- SqlDependencyListener.cs
- CaseInsensitiveOrdinalStringComparer.cs
- CollectionChangeEventArgs.cs
- TreeNodeStyle.cs
- PnrpPeerResolverBindingElement.cs
- PlanCompiler.cs
- ScalarType.cs
- IgnoreDeviceFilterElementCollection.cs
- XmlEnumAttribute.cs
- Nullable.cs
- CacheHelper.cs
- VoiceObjectToken.cs
- SqlGenerator.cs
- SystemThemeKey.cs
- Deserializer.cs
- HwndProxyElementProvider.cs
- ComponentManagerBroker.cs
- ConfigXmlSignificantWhitespace.cs
- SharedPerformanceCounter.cs
- MD5.cs