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
- XamlClipboardData.cs
- ProviderConnectionPointCollection.cs
- Schema.cs
- EDesignUtil.cs
- InstalledFontCollection.cs
- InkPresenterAutomationPeer.cs
- AssociatedControlConverter.cs
- TraceContextEventArgs.cs
- GlyphCache.cs
- FixedBufferAttribute.cs
- AbstractDataSvcMapFileLoader.cs
- PersonalizationState.cs
- InvalidCastException.cs
- NativeActivityTransactionContext.cs
- ToolStripOverflowButton.cs
- SortedList.cs
- HTMLTagNameToTypeMapper.cs
- QueryConverter.cs
- CompilerError.cs
- ProfileGroupSettingsCollection.cs
- TagMapInfo.cs
- fixedPageContentExtractor.cs
- WindowClosedEventArgs.cs
- KnownBoxes.cs
- HttpValueCollection.cs
- DataColumnMapping.cs
- OdbcDataAdapter.cs
- CellRelation.cs
- TextParagraphProperties.cs
- CodeDOMUtility.cs
- SmiConnection.cs
- Scripts.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- DataRelationPropertyDescriptor.cs
- PrefixQName.cs
- XmlDocumentType.cs
- BulletedListEventArgs.cs
- CustomErrorsSectionWrapper.cs
- TlsSspiNegotiation.cs
- TrackingStringDictionary.cs
- util.cs
- OrderedDictionary.cs
- MetadataCollection.cs
- ServiceInfo.cs
- FreezableDefaultValueFactory.cs
- StreamReader.cs
- CodeMemberMethod.cs
- RawStylusInputCustomDataList.cs
- ProfileSettingsCollection.cs
- ComponentEditorPage.cs
- XmlSchemaSimpleContentRestriction.cs
- DataGridCellClipboardEventArgs.cs
- BufferModesCollection.cs
- SelectionEditingBehavior.cs
- DoubleLinkListEnumerator.cs
- WebSysDescriptionAttribute.cs
- FamilyMap.cs
- UseManagedPresentationBindingElementImporter.cs
- ConcurrentStack.cs
- Int16.cs
- ButtonBase.cs
- CrossContextChannel.cs
- DataTable.cs
- PeerEndPoint.cs
- XPathException.cs
- WindowCollection.cs
- WindowsListViewSubItem.cs
- HttpFileCollection.cs
- ColorAnimationBase.cs
- PathFigure.cs
- SqlParameterizer.cs
- ExecutionContext.cs
- MasterPageBuildProvider.cs
- AutomationPropertyInfo.cs
- FrameworkContentElement.cs
- FrameworkObject.cs
- DataServiceQueryException.cs
- PasswordTextNavigator.cs
- PartialTrustValidationBehavior.cs
- SchemaAttDef.cs
- WebControlAdapter.cs
- SelectionEditingBehavior.cs
- Source.cs
- XmlSchemaGroup.cs
- ConfigXmlAttribute.cs
- WindowHelperService.cs
- SmiSettersStream.cs
- WorkflowMessageEventArgs.cs
- IdentityHolder.cs
- StateMachine.cs
- StyleCollection.cs
- SecurityManager.cs
- ParsedRoute.cs
- StrokeCollectionDefaultValueFactory.cs
- CompiledQueryCacheKey.cs
- codemethodreferenceexpression.cs
- ShellProvider.cs
- WebReferenceCollection.cs
- SecurityRuntime.cs
- MimeMultiPart.cs