Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ArgumentOutOfRangeException.cs
- CodeMethodReturnStatement.cs
- TableLayoutSettings.cs
- TextBreakpoint.cs
- RuntimeVariablesExpression.cs
- CapacityStreamGeometryContext.cs
- FrameworkObject.cs
- IIS7UserPrincipal.cs
- CodeRegionDirective.cs
- webeventbuffer.cs
- DataGridViewColumn.cs
- CustomAttributeSerializer.cs
- TextFormatter.cs
- NullableLongMinMaxAggregationOperator.cs
- NetworkCredential.cs
- TextEndOfParagraph.cs
- SqlNotificationRequest.cs
- KnownTypeHelper.cs
- _TransmitFileOverlappedAsyncResult.cs
- SQLMoneyStorage.cs
- SystemGatewayIPAddressInformation.cs
- RequiredAttributeAttribute.cs
- MsmqSecureHashAlgorithm.cs
- DataRelationCollection.cs
- DirectionalLight.cs
- SqlDelegatedTransaction.cs
- SqlExpressionNullability.cs
- Point3D.cs
- ActivityTrace.cs
- ExpressionTextBox.xaml.cs
- NativeMethods.cs
- HtmlInputHidden.cs
- PbrsForward.cs
- ReflectEventDescriptor.cs
- SerializationInfo.cs
- ExclusiveHandleList.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- GridViewColumnCollection.cs
- DataServiceHostFactory.cs
- CodeDirectoryCompiler.cs
- ReadOnlyPropertyMetadata.cs
- RC2CryptoServiceProvider.cs
- ConstraintManager.cs
- StoryFragments.cs
- CharAnimationUsingKeyFrames.cs
- PrintPreviewDialog.cs
- TypedReference.cs
- CompiledRegexRunnerFactory.cs
- ProfileService.cs
- Mappings.cs
- SurrogateEncoder.cs
- RenderData.cs
- LinqDataView.cs
- DictionarySectionHandler.cs
- ObservableCollection.cs
- XPathDocumentNavigator.cs
- FileDataSourceCache.cs
- SystemInformation.cs
- ResXFileRef.cs
- Point3DAnimationBase.cs
- ScriptReference.cs
- Label.cs
- ExpandedProjectionNode.cs
- AttributeCallbackBuilder.cs
- PagerSettings.cs
- XmlSchemaSimpleTypeUnion.cs
- WebBaseEventKeyComparer.cs
- GuidelineSet.cs
- RegisteredHiddenField.cs
- activationcontext.cs
- FormClosingEvent.cs
- _RequestCacheProtocol.cs
- SuppressMessageAttribute.cs
- ControlEvent.cs
- XmlNodeWriter.cs
- XmlAnyAttributeAttribute.cs
- BitmapDecoder.cs
- EntityDataSourceConfigureObjectContext.cs
- IFormattable.cs
- Misc.cs
- AssemblyBuilder.cs
- LinkTarget.cs
- QuaternionValueSerializer.cs
- Axis.cs
- AdCreatedEventArgs.cs
- MethodImplAttribute.cs
- HyperLinkField.cs
- Graphics.cs
- File.cs
- ObjectDataSourceSelectingEventArgs.cs
- DispatcherSynchronizationContext.cs
- ArgumentOutOfRangeException.cs
- AddInAdapter.cs
- OpenTypeCommon.cs
- SpAudioStreamWrapper.cs
- ICspAsymmetricAlgorithm.cs
- RequestDescription.cs
- Lease.cs
- CultureSpecificStringDictionary.cs
- DynamicResourceExtensionConverter.cs