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
- ConfigurationElementProperty.cs
- NavigationPropertyAccessor.cs
- CopyNamespacesAction.cs
- RowTypeElement.cs
- CodeExpressionStatement.cs
- UnregisterInfo.cs
- TextStore.cs
- ImageButton.cs
- LongMinMaxAggregationOperator.cs
- EditorZoneBase.cs
- SmtpMail.cs
- PropertyTab.cs
- CollectionViewGroupInternal.cs
- ExpressionCopier.cs
- MessagePropertyDescriptionCollection.cs
- ListViewItem.cs
- RequestCacheValidator.cs
- IdnMapping.cs
- StorageComplexTypeMapping.cs
- RepeaterItemCollection.cs
- SQLDateTime.cs
- TabControl.cs
- SqlRemoveConstantOrderBy.cs
- BindingMAnagerBase.cs
- MultiTrigger.cs
- PartialCachingAttribute.cs
- TypeBrowserDialog.cs
- SettingsBase.cs
- RMPermissions.cs
- WindowsButton.cs
- XmlObjectSerializerReadContext.cs
- AutomationAttributeInfo.cs
- ReadWriteObjectLock.cs
- KeyPressEvent.cs
- DynamicExpression.cs
- WebPartCloseVerb.cs
- SqlConnection.cs
- EventMappingSettingsCollection.cs
- ISessionStateStore.cs
- DNS.cs
- SiteMapNodeItem.cs
- UriExt.cs
- GuidelineSet.cs
- ViewBase.cs
- ArrayConverter.cs
- CodeSnippetCompileUnit.cs
- SimpleTypeResolver.cs
- StringFunctions.cs
- TextSpan.cs
- OLEDB_Util.cs
- SemanticKeyElement.cs
- WindowsComboBox.cs
- DbInsertCommandTree.cs
- ProcessManager.cs
- TransactionCache.cs
- ToolStripPanelRow.cs
- ConfigXmlComment.cs
- BulletDecorator.cs
- DrawListViewSubItemEventArgs.cs
- RepeatButtonAutomationPeer.cs
- AsyncStreamReader.cs
- AdornerDecorator.cs
- WindowsPrincipal.cs
- ProcessInfo.cs
- StringAttributeCollection.cs
- FrameworkContextData.cs
- FileDialog_Vista.cs
- shaper.cs
- AuditLevel.cs
- ErrorBehavior.cs
- NamedPipeTransportManager.cs
- NamespaceDecl.cs
- SecuritySessionClientSettings.cs
- ContextMarshalException.cs
- CellCreator.cs
- HiddenField.cs
- UserNamePasswordValidator.cs
- BindingsCollection.cs
- MaskDescriptors.cs
- GridEntry.cs
- IMembershipProvider.cs
- ReachPrintTicketSerializer.cs
- SqlAggregateChecker.cs
- LocalizeDesigner.cs
- DataGridViewRowConverter.cs
- HitTestResult.cs
- Logging.cs
- PathBox.cs
- KnownAssemblyEntry.cs
- SqlUtils.cs
- DataGridViewDesigner.cs
- Tablet.cs
- InvokeMethodDesigner.xaml.cs
- arabicshape.cs
- Page.cs
- XpsSerializationManagerAsync.cs
- GridViewDeleteEventArgs.cs
- Int32.cs
- RegistryKey.cs
- FlowDecision.cs