Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ElementsClipboardData.cs
- GridViewRow.cs
- AdornerHitTestResult.cs
- DBDataPermission.cs
- VisualProxy.cs
- UnsafePeerToPeerMethods.cs
- EmptyEnumerable.cs
- DbParameterHelper.cs
- WebHostUnsafeNativeMethods.cs
- SecurityPermission.cs
- SafeArrayRankMismatchException.cs
- OrderedDictionary.cs
- _CacheStreams.cs
- SparseMemoryStream.cs
- NamedElement.cs
- ConfigXmlAttribute.cs
- XXXOnTypeBuilderInstantiation.cs
- IDQuery.cs
- Rfc2898DeriveBytes.cs
- TablePattern.cs
- TrustManager.cs
- DocumentPageViewAutomationPeer.cs
- RNGCryptoServiceProvider.cs
- CacheVirtualItemsEvent.cs
- ConvertTextFrag.cs
- SizeIndependentAnimationStorage.cs
- CodeIndexerExpression.cs
- XmlQuerySequence.cs
- HandleInitializationContext.cs
- StoreItemCollection.cs
- ToolStripItem.cs
- ConnectionManagementSection.cs
- XmlTextWriter.cs
- EmbeddedMailObjectCollectionEditor.cs
- EdmProviderManifest.cs
- DataBoundControlHelper.cs
- AuthenticatedStream.cs
- Light.cs
- LocationFactory.cs
- EventToken.cs
- VerticalAlignConverter.cs
- ApplicationFileParser.cs
- MatrixAnimationUsingKeyFrames.cs
- DispatchWrapper.cs
- MenuItem.cs
- SerializationFieldInfo.cs
- DocumentPageViewAutomationPeer.cs
- XmlHierarchyData.cs
- HMACRIPEMD160.cs
- RemotingAttributes.cs
- LicFileLicenseProvider.cs
- RouteItem.cs
- assemblycache.cs
- FlatButtonAppearance.cs
- Filter.cs
- DataTableCollection.cs
- SizeChangedEventArgs.cs
- MetadataUtilsSmi.cs
- OrderPreservingMergeHelper.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- CharStorage.cs
- SafeSystemMetrics.cs
- WebPartCancelEventArgs.cs
- SessionStateContainer.cs
- SecurityManager.cs
- IncrementalReadDecoders.cs
- SqlWebEventProvider.cs
- XmlFormatExtensionPointAttribute.cs
- COM2TypeInfoProcessor.cs
- InputProcessorProfiles.cs
- PersonalizablePropertyEntry.cs
- AspCompat.cs
- FontSource.cs
- CacheDependency.cs
- CreateUserErrorEventArgs.cs
- EDesignUtil.cs
- OAVariantLib.cs
- TextTreeUndo.cs
- TypeInfo.cs
- DataSourceCache.cs
- TemplatePartAttribute.cs
- DesignTable.cs
- CalendarAutoFormatDialog.cs
- PolyBezierSegment.cs
- COM2PropertyDescriptor.cs
- TreeView.cs
- CodeGenerator.cs
- BufferedReadStream.cs
- ToolStripDropDownClosingEventArgs.cs
- PassportAuthentication.cs
- GridViewSortEventArgs.cs
- Int16Storage.cs
- RectangleConverter.cs
- SpeechDetectedEventArgs.cs
- Button.cs
- ToolTipAutomationPeer.cs
- HtmlGenericControl.cs
- SequentialUshortCollection.cs
- HScrollBar.cs
- ProcessHostConfigUtils.cs