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
- COM2ExtendedUITypeEditor.cs
- ExpressionCopier.cs
- ModuleBuilderData.cs
- ParseHttpDate.cs
- BitmapFrame.cs
- NestedContainer.cs
- Hash.cs
- PolicyException.cs
- XmlSerializationGeneratedCode.cs
- ByteFacetDescriptionElement.cs
- InputScopeAttribute.cs
- TogglePattern.cs
- InfoCardBaseException.cs
- TraceSection.cs
- MemberDomainMap.cs
- SubpageParaClient.cs
- DataGridState.cs
- TimeSpanMinutesConverter.cs
- remotingproxy.cs
- TimeSpanSecondsConverter.cs
- EasingQuaternionKeyFrame.cs
- SqlConnectionStringBuilder.cs
- MtomMessageEncodingElement.cs
- DecodeHelper.cs
- CodeTypeReference.cs
- XmlAttributeProperties.cs
- DSGeneratorProblem.cs
- XmlSchemaSimpleTypeList.cs
- BamlMapTable.cs
- OleCmdHelper.cs
- DataGridViewSelectedColumnCollection.cs
- ObjectViewQueryResultData.cs
- WebPartZone.cs
- FtpWebRequest.cs
- Fault.cs
- StringFunctions.cs
- CustomError.cs
- ToolStripSettings.cs
- COM2PropertyDescriptor.cs
- SchemaTypeEmitter.cs
- DataTablePropertyDescriptor.cs
- Rectangle.cs
- ToolStripDropDownButton.cs
- RangeValidator.cs
- ExpandoObject.cs
- DashStyle.cs
- StylusDevice.cs
- ContentIterators.cs
- Base64Encoder.cs
- XmlSchemaObjectTable.cs
- WebPartAuthorizationEventArgs.cs
- SmtpNtlmAuthenticationModule.cs
- HtmlImage.cs
- SizeConverter.cs
- ReadWriteObjectLock.cs
- XPathNodeHelper.cs
- CodeCommentStatementCollection.cs
- ProfileInfo.cs
- QueueSurrogate.cs
- HttpServerVarsCollection.cs
- LiteralTextContainerControlBuilder.cs
- WebPartUserCapability.cs
- CodeTypeReferenceCollection.cs
- TdsParserStateObject.cs
- ImpersonationContext.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- XmlNamedNodeMap.cs
- PropertyItem.cs
- ImageList.cs
- DynamicValidator.cs
- Funcletizer.cs
- Inflater.cs
- BuildManagerHost.cs
- AssociationSetEnd.cs
- XmlSchemaParticle.cs
- DockAndAnchorLayout.cs
- _AcceptOverlappedAsyncResult.cs
- EncodingInfo.cs
- InputScopeConverter.cs
- RegexCapture.cs
- ListViewUpdatedEventArgs.cs
- ReferentialConstraint.cs
- DataGridViewSortCompareEventArgs.cs
- GridViewColumnHeaderAutomationPeer.cs
- PostBackTrigger.cs
- WorkflowApplicationException.cs
- InheritanceContextHelper.cs
- WebUtil.cs
- PageParser.cs
- NavigationWindow.cs
- ReaderWriterLock.cs
- AssemblyFilter.cs
- ConstantExpression.cs
- NamespaceQuery.cs
- HGlobalSafeHandle.cs
- XhtmlMobileTextWriter.cs
- ToolStripGrip.cs
- TcpChannelListener.cs
- cookieexception.cs
- DecimalFormatter.cs