Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- PointLight.cs
- NativeMethods.cs
- TaskHelper.cs
- ServiceControllerDesigner.cs
- SqlStream.cs
- CurrencyWrapper.cs
- XmlQueryContext.cs
- LexicalChunk.cs
- ModelPropertyCollectionImpl.cs
- PerformanceCounterCategory.cs
- RequestUriProcessor.cs
- TextAdaptor.cs
- LicenseProviderAttribute.cs
- AutoResizedEvent.cs
- XMLDiffLoader.cs
- Merger.cs
- MultiBindingExpression.cs
- DataGridViewAutoSizeModeEventArgs.cs
- GeneratedContractType.cs
- PathData.cs
- Bidi.cs
- OSFeature.cs
- URLString.cs
- PrinterUnitConvert.cs
- TraceHwndHost.cs
- BoundColumn.cs
- SqlWebEventProvider.cs
- AtomParser.cs
- NativeMethods.cs
- ContextQuery.cs
- OleDbConnectionFactory.cs
- RequestCache.cs
- WindowsNonControl.cs
- EmissiveMaterial.cs
- CultureTable.cs
- DataControlFieldCell.cs
- Point3DKeyFrameCollection.cs
- SystemTcpStatistics.cs
- DataGridViewColumnEventArgs.cs
- EventSetterHandlerConverter.cs
- SessionState.cs
- RegexRunner.cs
- HttpFileCollectionBase.cs
- CollectionConverter.cs
- StyleSheetComponentEditor.cs
- TextBoxAutoCompleteSourceConverter.cs
- designeractionlistschangedeventargs.cs
- DataControlPagerLinkButton.cs
- objectresult_tresulttype.cs
- MexNamedPipeBindingCollectionElement.cs
- Rotation3D.cs
- DeclarativeCatalogPart.cs
- TdsRecordBufferSetter.cs
- TextRange.cs
- HitTestParameters.cs
- Span.cs
- SiteMapSection.cs
- TypefaceCollection.cs
- WebRequestModulesSection.cs
- EntityContainerAssociationSetEnd.cs
- OrderedDictionary.cs
- JoinGraph.cs
- ImageConverter.cs
- CngAlgorithm.cs
- querybuilder.cs
- TypeNameHelper.cs
- MembershipSection.cs
- DocumentEventArgs.cs
- JapaneseCalendar.cs
- HScrollProperties.cs
- XPathPatternBuilder.cs
- PrtTicket_Public.cs
- FastPropertyAccessor.cs
- FileLogRecordHeader.cs
- CodeMemberProperty.cs
- CardSpaceSelector.cs
- CodeExpressionCollection.cs
- ValidationSummary.cs
- SqlClientFactory.cs
- SystemFonts.cs
- NumberFormatInfo.cs
- ImageEditor.cs
- MailMessageEventArgs.cs
- ScrollChrome.cs
- StylusPointProperty.cs
- StrongName.cs
- PublishLicense.cs
- DrawingAttributesDefaultValueFactory.cs
- MenuItemStyle.cs
- ResolveNextArgumentWorkItem.cs
- HttpSysSettings.cs
- ThreadStaticAttribute.cs
- XmlSchema.cs
- PageFunction.cs
- XmlNamespaceMapping.cs
- DebuggerAttributes.cs
- BlurEffect.cs
- ObjectSecurity.cs
- ParameterModifier.cs
- StringDictionaryWithComparer.cs