Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- DataGridViewColumnHeaderCell.cs
- UnicastIPAddressInformationCollection.cs
- SerialPinChanges.cs
- Events.cs
- CommandEventArgs.cs
- TextBoxView.cs
- CryptoProvider.cs
- Html32TextWriter.cs
- LocatorPartList.cs
- ActivityValidator.cs
- SortedDictionary.cs
- LineInfo.cs
- MetaData.cs
- HttpRequest.cs
- AutomationPropertyInfo.cs
- PolicyException.cs
- PeerPresenceInfo.cs
- QueryCursorEventArgs.cs
- QueryPageSettingsEventArgs.cs
- InteropAutomationProvider.cs
- BinaryWriter.cs
- CapacityStreamGeometryContext.cs
- FunctionUpdateCommand.cs
- StateRuntime.cs
- XPathCompileException.cs
- MethodAccessException.cs
- FontFaceLayoutInfo.cs
- ObjectSecurityT.cs
- Converter.cs
- Splitter.cs
- UnauthorizedWebPart.cs
- CopyAction.cs
- DataSpaceManager.cs
- SharedUtils.cs
- PrintPreviewDialog.cs
- BinaryMethodMessage.cs
- LinkLabelLinkClickedEvent.cs
- AssemblyResourceLoader.cs
- DrawingBrush.cs
- GridViewItemAutomationPeer.cs
- TypedTableBase.cs
- SafeIUnknown.cs
- PageThemeBuildProvider.cs
- Application.cs
- DataGridViewLinkCell.cs
- XmlSchemaGroupRef.cs
- DataViewListener.cs
- autovalidator.cs
- FixedSOMFixedBlock.cs
- OleAutBinder.cs
- Permission.cs
- WebPartExportVerb.cs
- AuthorizationContext.cs
- ExtensibleClassFactory.cs
- DataKeyCollection.cs
- CallContext.cs
- ConditionCollection.cs
- LineInfo.cs
- ContactManager.cs
- ToolboxItemFilterAttribute.cs
- OperationCanceledException.cs
- NameValueCollection.cs
- ConfigXmlElement.cs
- BinaryUtilClasses.cs
- _AutoWebProxyScriptWrapper.cs
- GeneratedContractType.cs
- HMAC.cs
- DataServiceEntityAttribute.cs
- ObjectSecurityT.cs
- NullableDoubleSumAggregationOperator.cs
- SmtpFailedRecipientException.cs
- DiscardableAttribute.cs
- SqlDataSourceStatusEventArgs.cs
- PolicyValidationException.cs
- DelegatingMessage.cs
- ObjectComplexPropertyMapping.cs
- WasAdminWrapper.cs
- Ipv6Element.cs
- SafeHandles.cs
- View.cs
- querybuilder.cs
- RemotingException.cs
- FixUp.cs
- Messages.cs
- PeerNameRecordCollection.cs
- ResourceAssociationSetEnd.cs
- AttributedMetaModel.cs
- KnownTypeAttribute.cs
- EntityDataSourceReferenceGroup.cs
- HttpListener.cs
- WindowHideOrCloseTracker.cs
- LookupBindingPropertiesAttribute.cs
- XmlSchemaAnnotation.cs
- InvalidComObjectException.cs
- FormViewDeleteEventArgs.cs
- Delegate.cs
- DataTableCollection.cs
- StrokeIntersection.cs
- TextTreeRootTextBlock.cs
- ActivityBuilder.cs