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
- Int16KeyFrameCollection.cs
- CultureTable.cs
- HMACRIPEMD160.cs
- dsa.cs
- TextRangeEdit.cs
- OverlappedContext.cs
- DataGridTableCollection.cs
- RijndaelManagedTransform.cs
- GraphicsPathIterator.cs
- SelectionEditor.cs
- ViewCellRelation.cs
- SchemaSetCompiler.cs
- ZipIOExtraFieldZip64Element.cs
- MetafileHeader.cs
- QilScopedVisitor.cs
- LinqDataSource.cs
- SystemNetHelpers.cs
- SimpleHandlerBuildProvider.cs
- Utils.cs
- FileSystemEventArgs.cs
- HMAC.cs
- DrawingContextDrawingContextWalker.cs
- CompensationDesigner.cs
- SqlBulkCopy.cs
- FactoryRecord.cs
- RichTextBox.cs
- WebPartsPersonalization.cs
- TraversalRequest.cs
- XsdBuilder.cs
- DynamicDiscoSearcher.cs
- SoapMessage.cs
- ISAPIWorkerRequest.cs
- Itemizer.cs
- ComNativeDescriptor.cs
- FtpWebResponse.cs
- DataContractSet.cs
- ToolStripAdornerWindowService.cs
- KeyboardDevice.cs
- CodeLabeledStatement.cs
- ConfigurationException.cs
- ToolTipAutomationPeer.cs
- RecognizedWordUnit.cs
- documentsequencetextview.cs
- SplitterPanel.cs
- XhtmlTextWriter.cs
- RtfFormatStack.cs
- DbDataSourceEnumerator.cs
- LicenseContext.cs
- PersianCalendar.cs
- WriteTimeStream.cs
- GeometryGroup.cs
- Translator.cs
- WebExceptionStatus.cs
- BrushValueSerializer.cs
- ThaiBuddhistCalendar.cs
- XmlDocumentFragment.cs
- StructuredTypeEmitter.cs
- QilGenerator.cs
- LiteralText.cs
- EventWaitHandleSecurity.cs
- DataGridHeaderBorder.cs
- DLinqTableProvider.cs
- BigIntegerStorage.cs
- CodeTypeMember.cs
- IsolatedStorageFilePermission.cs
- TextElementEnumerator.cs
- VirtualDirectoryMappingCollection.cs
- Trace.cs
- UICuesEvent.cs
- RelatedImageListAttribute.cs
- DataGridAddNewRow.cs
- _AuthenticationState.cs
- XPathBinder.cs
- DefaultDiscoveryServiceExtension.cs
- StoreItemCollection.Loader.cs
- UIntPtr.cs
- InputLanguage.cs
- Debug.cs
- XmlSchemaSequence.cs
- XmlDigitalSignatureProcessor.cs
- XmlWriterDelegator.cs
- ProfileInfo.cs
- SwitchExpression.cs
- Nodes.cs
- ZoneMembershipCondition.cs
- Or.cs
- _ConnectStream.cs
- LayoutTable.cs
- Quaternion.cs
- RSAPKCS1SignatureDeformatter.cs
- HeaderedItemsControl.cs
- CheckPair.cs
- ImageListImageEditor.cs
- WebSysDefaultValueAttribute.cs
- DataServiceRequestException.cs
- XmlSerializableWriter.cs
- BehaviorService.cs
- SchemaNotation.cs
- UniqueIdentifierService.cs
- SimpleApplicationHost.cs