Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SByte.cs
- SspiSecurityToken.cs
- AsyncDataRequest.cs
- DataGridViewCellEventArgs.cs
- Table.cs
- XmlDesigner.cs
- XmlSchemaObjectCollection.cs
- SelectorAutomationPeer.cs
- Query.cs
- SelectionPatternIdentifiers.cs
- TableAdapterManagerHelper.cs
- ConfigurationPropertyAttribute.cs
- FunctionDescription.cs
- MessageEnumerator.cs
- SqlIdentifier.cs
- AppDomainEvidenceFactory.cs
- WhitespaceRuleReader.cs
- PermissionSetEnumerator.cs
- AssociatedControlConverter.cs
- EraserBehavior.cs
- IProvider.cs
- WebPartConnectionsDisconnectVerb.cs
- PreviousTrackingServiceAttribute.cs
- UpdateCompiler.cs
- ReplacementText.cs
- XmlAttributes.cs
- UpdatePanelControlTrigger.cs
- ZoneButton.cs
- ForeignKeyFactory.cs
- WebPartCloseVerb.cs
- CombinedGeometry.cs
- BooleanStorage.cs
- ResourceProviderFactory.cs
- WebEvents.cs
- SelfSignedCertificate.cs
- KnownTypes.cs
- RedirectionProxy.cs
- ClockGroup.cs
- DirectionalLight.cs
- RegionInfo.cs
- EdmProperty.cs
- TextEditorLists.cs
- WorkflowHostingResponseContext.cs
- Helpers.cs
- MailMessageEventArgs.cs
- DBSchemaRow.cs
- Soap.cs
- Point.cs
- TypeDescriptionProvider.cs
- TreeNodeCollection.cs
- ISAPIWorkerRequest.cs
- PlacementWorkspace.cs
- EventEntry.cs
- GroupBox.cs
- ContainerUtilities.cs
- ToolStripSeparator.cs
- DataReceivedEventArgs.cs
- SemanticAnalyzer.cs
- ConnectorMovedEventArgs.cs
- SizeF.cs
- OdbcConnectionPoolProviderInfo.cs
- SoapConverter.cs
- MediaTimeline.cs
- CompilerCollection.cs
- SqlTriggerAttribute.cs
- AuthenticationConfig.cs
- BindingNavigator.cs
- Currency.cs
- MediaEntryAttribute.cs
- MenuItem.cs
- StatusBarItem.cs
- CalendarDataBindingHandler.cs
- ThreadStaticAttribute.cs
- TypeBuilderInstantiation.cs
- DtdParser.cs
- SchemaElementLookUpTableEnumerator.cs
- TranslateTransform3D.cs
- SchemaDeclBase.cs
- ObjectParameterCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- PersianCalendar.cs
- EastAsianLunisolarCalendar.cs
- FieldNameLookup.cs
- DTCTransactionManager.cs
- Registry.cs
- DesignerLoader.cs
- ReturnValue.cs
- RemotingSurrogateSelector.cs
- EnterpriseServicesHelper.cs
- ConfigurationPermission.cs
- EntityModelSchemaGenerator.cs
- RichTextBoxDesigner.cs
- KoreanLunisolarCalendar.cs
- X509Extension.cs
- StatusCommandUI.cs
- PropertyDescriptorGridEntry.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- Tablet.cs
- LockCookie.cs
- Events.cs