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
- InlinedLocationReference.cs
- DataGridViewComponentPropertyGridSite.cs
- CompilerError.cs
- AutomationElementCollection.cs
- SqlRemoveConstantOrderBy.cs
- SafeRightsManagementSessionHandle.cs
- ResourceCategoryAttribute.cs
- ConstructorArgumentAttribute.cs
- ErrorProvider.cs
- ConnectionProviderAttribute.cs
- SqlBooleanizer.cs
- CuspData.cs
- EventProviderWriter.cs
- ToolboxBitmapAttribute.cs
- Token.cs
- TcpSocketManager.cs
- XmlDeclaration.cs
- StringResourceManager.cs
- _LocalDataStoreMgr.cs
- BaseParser.cs
- WrappedKeySecurityToken.cs
- Types.cs
- ProviderSettings.cs
- Inline.cs
- HostingEnvironmentSection.cs
- ExecutionEngineException.cs
- FormConverter.cs
- ConfigXmlSignificantWhitespace.cs
- activationcontext.cs
- FormattedTextSymbols.cs
- InheritanceContextChangedEventManager.cs
- HwndKeyboardInputProvider.cs
- WsrmFault.cs
- Point3D.cs
- EntityContainerEntitySetDefiningQuery.cs
- SystemIPGlobalStatistics.cs
- AutomationIdentifier.cs
- UrlPath.cs
- PowerStatus.cs
- ProtocolViolationException.cs
- PageClientProxyGenerator.cs
- ContentHostHelper.cs
- StretchValidation.cs
- SQLSingle.cs
- RangeValuePattern.cs
- ValidateNames.cs
- EntityKeyElement.cs
- OdbcHandle.cs
- Matrix3DStack.cs
- SolidColorBrush.cs
- MDIControlStrip.cs
- XPathEmptyIterator.cs
- PasswordRecovery.cs
- ScrollChrome.cs
- WindowsRichEditRange.cs
- ImageInfo.cs
- RawStylusInputCustomData.cs
- InstanceNormalEvent.cs
- BindingExpressionBase.cs
- FixUp.cs
- ArcSegment.cs
- BypassElementCollection.cs
- SqlReferenceCollection.cs
- FunctionMappingTranslator.cs
- HostingMessageProperty.cs
- FilteredReadOnlyMetadataCollection.cs
- ObjectHelper.cs
- AutomationElementIdentifiers.cs
- SchemaCollectionPreprocessor.cs
- WebSysDescriptionAttribute.cs
- WindowsIPAddress.cs
- ResetableIterator.cs
- EnumerableCollectionView.cs
- IgnoreDeviceFilterElementCollection.cs
- GorillaCodec.cs
- Regex.cs
- GridErrorDlg.cs
- RotateTransform3D.cs
- EventPrivateKey.cs
- EdmPropertyAttribute.cs
- ListControlConvertEventArgs.cs
- FileUtil.cs
- IpcClientChannel.cs
- OdbcFactory.cs
- MessageDecoder.cs
- UrlMappingsSection.cs
- DateTimeValueSerializer.cs
- ExpressionEvaluator.cs
- RegexTree.cs
- SerializationEventsCache.cs
- MemberHolder.cs
- ValueSerializer.cs
- InputDevice.cs
- XmlNamespaceMappingCollection.cs
- SizeConverter.cs
- ToolStripDropTargetManager.cs
- QilNode.cs
- OdbcTransaction.cs
- BamlLocalizableResourceKey.cs
- ProfileParameter.cs