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
- ZoneIdentityPermission.cs
- ClientFormsAuthenticationCredentials.cs
- SamlEvidence.cs
- GeometryGroup.cs
- CompleteWizardStep.cs
- FillErrorEventArgs.cs
- ListViewContainer.cs
- PaperSource.cs
- DateTimeValueSerializer.cs
- BindingNavigator.cs
- ZeroOpNode.cs
- Typeface.cs
- MarkupWriter.cs
- IdentityNotMappedException.cs
- DataServiceQueryProvider.cs
- DescendantQuery.cs
- ImportCatalogPart.cs
- ApplicationHost.cs
- DataStreamFromComStream.cs
- CompositeDataBoundControl.cs
- XmlUtil.cs
- EventHandlerList.cs
- SessionEndedEventArgs.cs
- SecurityContext.cs
- PageRequestManager.cs
- UseLicense.cs
- ContextMenuStrip.cs
- TemplatePagerField.cs
- XamlVector3DCollectionSerializer.cs
- CodeCatchClauseCollection.cs
- MinimizableAttributeTypeConverter.cs
- RegexCode.cs
- LeaseManager.cs
- DataBoundControlAdapter.cs
- IRCollection.cs
- GetLastErrorDetailsRequest.cs
- ReaderWriterLockWrapper.cs
- prompt.cs
- TextPenaltyModule.cs
- TypeResolvingOptionsAttribute.cs
- IndicFontClient.cs
- CapacityStreamGeometryContext.cs
- SweepDirectionValidation.cs
- XsdCachingReader.cs
- Binding.cs
- FixedSOMTable.cs
- SessionSymmetricTransportSecurityProtocolFactory.cs
- TrustSection.cs
- UnwrappedTypesXmlSerializerManager.cs
- DummyDataSource.cs
- MultiAsyncResult.cs
- Utils.cs
- DocumentScope.cs
- DecimalConstantAttribute.cs
- ServiceInfo.cs
- SkinBuilder.cs
- ViewStateException.cs
- SymbolUsageManager.cs
- Point3DKeyFrameCollection.cs
- WebPartDisplayModeCancelEventArgs.cs
- MailMessage.cs
- ArrayWithOffset.cs
- IssuanceLicense.cs
- MetadataItem_Static.cs
- MetadataCacheItem.cs
- XsltException.cs
- BackgroundFormatInfo.cs
- ExportOptions.cs
- Simplifier.cs
- ObjectNavigationPropertyMapping.cs
- SortedList.cs
- BrowserCapabilitiesFactoryBase.cs
- SQLBoolean.cs
- SortedList.cs
- BaseHashHelper.cs
- XmlSchemaComplexType.cs
- ServiceDescription.cs
- FileStream.cs
- DataServiceException.cs
- DataControlFieldCell.cs
- GroupQuery.cs
- Misc.cs
- ScrollData.cs
- CorruptingExceptionCommon.cs
- XmlWriterSettings.cs
- FontConverter.cs
- RuleSetReference.cs
- TextFindEngine.cs
- SchemaImporterExtensionElement.cs
- XomlSerializationHelpers.cs
- GridViewItemAutomationPeer.cs
- TypeTypeConverter.cs
- ObjectContext.cs
- StyleXamlParser.cs
- Int64Converter.cs
- ServicePointManagerElement.cs
- ConfigurationManagerInternal.cs
- StateMachineHelpers.cs
- WorkflowOperationBehavior.cs
- PersistChildrenAttribute.cs