Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlTopReducer.cs / 1305376 / 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
- DiscreteKeyFrames.cs
- RestHandlerFactory.cs
- DbDataReader.cs
- HtmlTernaryTree.cs
- PartitionResolver.cs
- ScalarOps.cs
- CounterCreationData.cs
- ClipboardProcessor.cs
- ProcessThread.cs
- MsmqChannelListenerBase.cs
- StreamUpdate.cs
- BasePropertyDescriptor.cs
- CssStyleCollection.cs
- TraceInternal.cs
- WinOEToolBoxItem.cs
- ActivityWithResultValueSerializer.cs
- RegexInterpreter.cs
- safelinkcollection.cs
- WebPartCancelEventArgs.cs
- StandardBindingImporter.cs
- AutoResizedEvent.cs
- View.cs
- SendActivityDesignerTheme.cs
- BinaryCommonClasses.cs
- SByteConverter.cs
- EdmItemError.cs
- InputBuffer.cs
- DesignRelationCollection.cs
- DataGridParentRows.cs
- DispatchChannelSink.cs
- CharacterBuffer.cs
- SiteMap.cs
- EntityClassGenerator.cs
- Journaling.cs
- DesignerAttribute.cs
- Thread.cs
- TemplateBindingExtensionConverter.cs
- ControlBuilder.cs
- AccessViolationException.cs
- LocationUpdates.cs
- XslException.cs
- SeekStoryboard.cs
- PageTheme.cs
- DecimalKeyFrameCollection.cs
- Cursors.cs
- XmlValueConverter.cs
- XsltInput.cs
- AuthenticationSection.cs
- EncodingInfo.cs
- WorkflowServiceHost.cs
- TraceContextRecord.cs
- AsymmetricSecurityProtocol.cs
- StringDictionaryEditor.cs
- ResourceCategoryAttribute.cs
- ArrayWithOffset.cs
- ScrollChrome.cs
- PerspectiveCamera.cs
- PrintingPermissionAttribute.cs
- StylusPoint.cs
- OracleCommandBuilder.cs
- StructuralCache.cs
- Point4D.cs
- VBCodeProvider.cs
- CodePrimitiveExpression.cs
- SqlServer2KCompatibilityCheck.cs
- SystemNetHelpers.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- BindingContext.cs
- xdrvalidator.cs
- PointLight.cs
- ConnectionOrientedTransportChannelFactory.cs
- ToolStripComboBox.cs
- BitmapSizeOptions.cs
- AppDomainShutdownMonitor.cs
- CqlIdentifiers.cs
- CqlLexerHelpers.cs
- Directory.cs
- CollectionViewGroup.cs
- Localizer.cs
- IsolatedStorageFilePermission.cs
- InnerItemCollectionView.cs
- XmlNavigatorStack.cs
- User.cs
- CodePageEncoding.cs
- DataComponentGenerator.cs
- MatrixAnimationUsingKeyFrames.cs
- MenuItem.cs
- CharConverter.cs
- ComNativeDescriptor.cs
- SessionChannels.cs
- PropertyBuilder.cs
- CodeConditionStatement.cs
- SystemIPGlobalProperties.cs
- CompilerGlobalScopeAttribute.cs
- ParseHttpDate.cs
- DbMetaDataColumnNames.cs
- VisualStyleElement.cs
- EmptyCollection.cs
- StreamUpgradeAcceptor.cs
- NameValuePermission.cs