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 / Query / SqlTopReducer.cs / 1 / SqlTopReducer.cs
using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; using System.Data.Linq; using System.Data.Linq.Provider; using System.Linq; namespace System.Data.Linq.SqlClient { internal class SqlTopReducer { internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, SqlFactory sql) { return new Visitor(annotations, sql).Visit(node); } class Visitor : SqlVisitor { SqlNodeAnnotations annotations; SqlFactory sql; internal Visitor(SqlNodeAnnotations annotations, SqlFactory sql) { this.annotations = annotations; this.sql = sql; } internal override SqlSelect VisitSelect(SqlSelect select) { base.VisitSelect(select); if (select.Top != null) { if (select.Top.NodeType == SqlNodeType.Value) { SqlValue val = (SqlValue)select.Top; // convert to literal value for SQL2K compatibility if (val.IsClientSpecified) { select.Top = sql.Value(val.ClrType, val.SqlType, val.Value, false, val.SourceExpression); } } else { // cannot be converted to literal value. note that this select is not SQL2K compatible this.annotations.Add(select.Top, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(select.Top.SourceExpression), SqlProvider.ProviderMode.Sql2000)); } } return select; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; using System.Data.Linq; using System.Data.Linq.Provider; using System.Linq; namespace System.Data.Linq.SqlClient { internal class SqlTopReducer { internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, SqlFactory sql) { return new Visitor(annotations, sql).Visit(node); } class Visitor : SqlVisitor { SqlNodeAnnotations annotations; SqlFactory sql; internal Visitor(SqlNodeAnnotations annotations, SqlFactory sql) { this.annotations = annotations; this.sql = sql; } internal override SqlSelect VisitSelect(SqlSelect select) { base.VisitSelect(select); if (select.Top != null) { if (select.Top.NodeType == SqlNodeType.Value) { SqlValue val = (SqlValue)select.Top; // convert to literal value for SQL2K compatibility if (val.IsClientSpecified) { select.Top = sql.Value(val.ClrType, val.SqlType, val.Value, false, val.SourceExpression); } } else { // cannot be converted to literal value. note that this select is not SQL2K compatible this.annotations.Add(select.Top, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(select.Top.SourceExpression), SqlProvider.ProviderMode.Sql2000)); } } return select; } } } } // 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
- WorkflowViewElement.cs
- AlphabeticalEnumConverter.cs
- ComplexPropertyEntry.cs
- ArrayList.cs
- StrokeCollectionConverter.cs
- DefaultPropertiesToSend.cs
- CompoundFileStorageReference.cs
- Link.cs
- DataService.cs
- SiteMapProvider.cs
- BatchStream.cs
- ProcessModule.cs
- GuidConverter.cs
- Executor.cs
- WindowsRegion.cs
- DataGridViewBindingCompleteEventArgs.cs
- DataGridViewColumnConverter.cs
- Pair.cs
- _ContextAwareResult.cs
- Assembly.cs
- DomNameTable.cs
- DesignerTransactionCloseEvent.cs
- BinaryQueryOperator.cs
- Events.cs
- DateTimeOffsetConverter.cs
- documentsequencetextview.cs
- ThreadPool.cs
- QilGeneratorEnv.cs
- CorePropertiesFilter.cs
- NameObjectCollectionBase.cs
- SrgsDocumentParser.cs
- ImageMapEventArgs.cs
- ObjectDataSourceStatusEventArgs.cs
- StaticExtension.cs
- DataStreamFromComStream.cs
- SHA512.cs
- PathGeometry.cs
- AppDomainUnloadedException.cs
- SymmetricKeyWrap.cs
- SubclassTypeValidatorAttribute.cs
- DataTablePropertyDescriptor.cs
- WorkflowPersistenceService.cs
- ToolStripSettings.cs
- oledbmetadatacollectionnames.cs
- TileModeValidation.cs
- EdgeProfileValidation.cs
- AnnotationStore.cs
- MarkupCompilePass2.cs
- DataFieldConverter.cs
- ManagedIStream.cs
- SqlConnectionManager.cs
- ToolstripProfessionalRenderer.cs
- WebPartCloseVerb.cs
- RegexNode.cs
- Clause.cs
- TypeViewSchema.cs
- assertwrapper.cs
- DependencyPropertyKey.cs
- Help.cs
- MetadataAssemblyHelper.cs
- ExecutedRoutedEventArgs.cs
- UpdatePanelTrigger.cs
- HiddenFieldPageStatePersister.cs
- CorePropertiesFilter.cs
- CompiledWorkflowDefinitionContext.cs
- SqlMethodTransformer.cs
- ToolStripLocationCancelEventArgs.cs
- ErrorTolerantObjectWriter.cs
- CommentEmitter.cs
- NegotiationTokenAuthenticator.cs
- CompoundFileDeflateTransform.cs
- CorePropertiesFilter.cs
- RectangleGeometry.cs
- _FixedSizeReader.cs
- SchemaInfo.cs
- TextServicesProperty.cs
- HelpInfo.cs
- XmlEventCache.cs
- NumericUpDownAcceleration.cs
- ImageAnimator.cs
- EventDescriptor.cs
- ToolStripSplitButton.cs
- TransactionProtocol.cs
- LinqTreeNodeEvaluator.cs
- RuntimeCompatibilityAttribute.cs
- ContentOperations.cs
- HwndStylusInputProvider.cs
- CodeDomSerializer.cs
- PropertyChangedEventManager.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- COMException.cs
- SizeLimitedCache.cs
- LabelLiteral.cs
- StateBag.cs
- ToolStripProgressBar.cs
- DBConnection.cs
- PropertyGridCommands.cs
- WebResourceUtil.cs
- SingleBodyParameterMessageFormatter.cs
- ConnectionProviderAttribute.cs