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
- Directory.cs
- TextEditorCharacters.cs
- TileModeValidation.cs
- ProxyFragment.cs
- XmlnsDefinitionAttribute.cs
- SqlFileStream.cs
- DbMetaDataColumnNames.cs
- Types.cs
- CfgSemanticTag.cs
- ReadOnlyDictionary.cs
- Queue.cs
- HttpSessionStateBase.cs
- XmlQuerySequence.cs
- TrackingConditionCollection.cs
- securitycriticaldataClass.cs
- ByteStreamGeometryContext.cs
- DesignBindingPicker.cs
- AnnouncementService.cs
- ContractBase.cs
- DataDocumentXPathNavigator.cs
- Profiler.cs
- SettingsSection.cs
- PictureBox.cs
- XmlSerializerFactory.cs
- DesignTimeTemplateParser.cs
- DiscardableAttribute.cs
- TraceLevelStore.cs
- IpcChannel.cs
- NameHandler.cs
- DrawingImage.cs
- DocumentViewerBaseAutomationPeer.cs
- BufferCache.cs
- ExtensionWindowResizeGrip.cs
- HwndTarget.cs
- PackagePart.cs
- StorageBasedPackageProperties.cs
- DateTimeSerializationSection.cs
- XmlnsCache.cs
- Int32Collection.cs
- InstanceOwnerQueryResult.cs
- MoveSizeWinEventHandler.cs
- UrlPath.cs
- TypeSystem.cs
- Expr.cs
- DispatcherProcessingDisabled.cs
- CryptoProvider.cs
- RegexCaptureCollection.cs
- UnsupportedPolicyOptionsException.cs
- Error.cs
- Rectangle.cs
- KeyValueInternalCollection.cs
- InternalConfigHost.cs
- BitmapSource.cs
- ArrangedElementCollection.cs
- WriteLineDesigner.xaml.cs
- QilNode.cs
- AppSettingsReader.cs
- X500Name.cs
- TabControlAutomationPeer.cs
- PermissionSet.cs
- FlowDocument.cs
- OLEDB_Util.cs
- FixedSchema.cs
- TypeInfo.cs
- SchemaCollectionPreprocessor.cs
- EventProviderBase.cs
- StyleBamlRecordReader.cs
- EntityContainerRelationshipSet.cs
- DataException.cs
- OleDbErrorCollection.cs
- XAMLParseException.cs
- StylesEditorDialog.cs
- BamlLocalizer.cs
- XmlDsigSep2000.cs
- ToolStripMenuItemCodeDomSerializer.cs
- UpdateExpressionVisitor.cs
- PathSegment.cs
- CodeGen.cs
- QueryOutputWriter.cs
- GridViewColumnHeader.cs
- PageParserFilter.cs
- CatalogPart.cs
- XmlSerializationWriter.cs
- EmptyQuery.cs
- SynchronizationContext.cs
- SourceChangedEventArgs.cs
- ConfigXmlText.cs
- Interlocked.cs
- QilReplaceVisitor.cs
- OutputScopeManager.cs
- EncoderExceptionFallback.cs
- ProfileManager.cs
- Attributes.cs
- CompilerState.cs
- InlineObject.cs
- ContractTypeNameElement.cs
- FacetValueContainer.cs
- EventProxy.cs
- HijriCalendar.cs
- InvokeSchedule.cs