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
- ClientScriptManager.cs
- ImportOptions.cs
- Control.cs
- RtfToXamlReader.cs
- DataGridPageChangedEventArgs.cs
- HttpPostClientProtocol.cs
- SqlServer2KCompatibilityCheck.cs
- InvalidFilterCriteriaException.cs
- WorkflowStateRollbackService.cs
- URLString.cs
- ColumnClickEvent.cs
- CharKeyFrameCollection.cs
- PropertyBuilder.cs
- TypeHelpers.cs
- FieldAccessException.cs
- ToolboxBitmapAttribute.cs
- CustomErrorsSection.cs
- RootBuilder.cs
- CompilerError.cs
- Visual.cs
- SafeMILHandleMemoryPressure.cs
- ILGenerator.cs
- ListViewHitTestInfo.cs
- AutoResetEvent.cs
- ListenerAdapter.cs
- UnhandledExceptionEventArgs.cs
- BufferBuilder.cs
- SamlNameIdentifierClaimResource.cs
- RangeBase.cs
- _AutoWebProxyScriptWrapper.cs
- DataGridToolTip.cs
- InvalidContentTypeException.cs
- InvalidPropValue.cs
- DoubleCollectionValueSerializer.cs
- Delay.cs
- OleStrCAMarshaler.cs
- PlacementWorkspace.cs
- OperationCanceledException.cs
- OutputCacheModule.cs
- Size3D.cs
- CacheOutputQuery.cs
- HTMLTagNameToTypeMapper.cs
- ResolveMatchesApril2005.cs
- GenericEnumerator.cs
- ObjectMemberMapping.cs
- PropertyConverter.cs
- BitmapMetadata.cs
- DesignerDataTableBase.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- WebPartVerb.cs
- ReadOnlyHierarchicalDataSource.cs
- SqlStatistics.cs
- TimelineGroup.cs
- PassportAuthenticationEventArgs.cs
- PerformanceCountersElement.cs
- WindowsStatic.cs
- CodeExpressionStatement.cs
- PointAnimationUsingPath.cs
- PriorityItem.cs
- SystemSounds.cs
- mda.cs
- OrderedEnumerableRowCollection.cs
- MethodExpr.cs
- JavaScriptSerializer.cs
- __FastResourceComparer.cs
- SkipStoryboardToFill.cs
- ScriptManager.cs
- FakeModelItemImpl.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ValidationEventArgs.cs
- MaskedTextBox.cs
- nulltextcontainer.cs
- DeflateStream.cs
- WindowsGraphics.cs
- ApplicationInfo.cs
- SqlWebEventProvider.cs
- DivideByZeroException.cs
- RegexTypeEditor.cs
- GcHandle.cs
- Reference.cs
- Setter.cs
- CheckoutException.cs
- DragDropManager.cs
- TcpWorkerProcess.cs
- Clipboard.cs
- DispatcherExceptionFilterEventArgs.cs
- SqlStream.cs
- MailMessageEventArgs.cs
- ExplicitDiscriminatorMap.cs
- ExceptionValidationRule.cs
- ToolStripLocationCancelEventArgs.cs
- Point3DAnimation.cs
- DbProviderConfigurationHandler.cs
- X509CertificateRecipientClientCredential.cs
- StorageMappingItemLoader.cs
- ObjectManager.cs
- ChannelManager.cs
- WeakReference.cs
- ConfigXmlText.cs
- SafeNativeMethodsCLR.cs