Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlParameterizer.cs / 1305376 / SqlParameterizer.cs
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data.Linq.Mapping; using System.Data.Linq.Provider; using System.Linq.Expressions; using System.Diagnostics.CodeAnalysis; namespace System.Data.Linq.SqlClient { internal enum SqlParameterType { Value, UserArgument, PreviousResult } internal class SqlParameterInfo { SqlParameter parameter; object value; Delegate accessor; internal SqlParameterInfo(SqlParameter parameter, Delegate accessor) { this.parameter = parameter; this.accessor = accessor; } internal SqlParameterInfo(SqlParameter parameter, object value) { this.parameter = parameter; this.value = value; } internal SqlParameterInfo(SqlParameter parameter) { this.parameter = parameter; } internal SqlParameterType Type { get { if (this.accessor != null) { return SqlParameterType.UserArgument; } else if (this.parameter.Name == "@ROWCOUNT") { return SqlParameterType.PreviousResult; } else { return SqlParameterType.Value; } } } internal SqlParameter Parameter { get { return this.parameter; } } internal Delegate Accessor { get { return this.accessor; } } internal object Value { get { return this.value; } } } internal class SqlParameterizer { TypeSystemProvider typeProvider; SqlNodeAnnotations annotations; int index; internal SqlParameterizer(TypeSystemProvider typeProvider, SqlNodeAnnotations annotations) { this.typeProvider = typeProvider; this.annotations = annotations; } internal ReadOnlyCollectionParameterize(SqlNode node) { return this.ParameterizeInternal(node).AsReadOnly(); } private List ParameterizeInternal(SqlNode node) { Visitor v = new Visitor(this); v.Visit(node); return new List (v.currentParams); } internal ReadOnlyCollection > ParameterizeBlock(SqlBlock block) { SqlParameterInfo rowStatus = new SqlParameterInfo( new SqlParameter(typeof(int), typeProvider.From(typeof(int)), "@ROWCOUNT", block.SourceExpression) ); List > list = new List >(); for (int i = 0, n = block.Statements.Count; i < n; i++) { SqlNode statement = block.Statements[i]; List parameters = this.ParameterizeInternal(statement); if (i > 0) { parameters.Add(rowStatus); } list.Add(parameters.AsReadOnly()); } return list.AsReadOnly(); } internal virtual string CreateParameterName() { return "@p" + this.index++; } class Visitor : SqlVisitor { private SqlParameterizer parameterizer; internal Dictionary
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebPartConnectionsEventArgs.cs
- SqlWebEventProvider.cs
- JoinCqlBlock.cs
- ServiceOperationParameter.cs
- DataGridViewHitTestInfo.cs
- AppSettingsSection.cs
- MemoryRecordBuffer.cs
- ObjectListSelectEventArgs.cs
- NegotiateStream.cs
- RNGCryptoServiceProvider.cs
- InstanceNormalEvent.cs
- BatchWriter.cs
- TypefaceMap.cs
- DoubleCollectionValueSerializer.cs
- WindowsTitleBar.cs
- Positioning.cs
- BackEase.cs
- ImagingCache.cs
- Stacktrace.cs
- ParserContext.cs
- WriteTimeStream.cs
- EntityViewGenerationAttribute.cs
- EventOpcode.cs
- localization.cs
- SectionXmlInfo.cs
- IconConverter.cs
- Bidi.cs
- Error.cs
- ButtonChrome.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- DelegatingConfigHost.cs
- StringReader.cs
- XmlTextReaderImplHelpers.cs
- TypefaceCollection.cs
- OpenFileDialog.cs
- DateTimeValueSerializerContext.cs
- WebControlsSection.cs
- SessionEndedEventArgs.cs
- XPathBuilder.cs
- remotingproxy.cs
- ImmComposition.cs
- SharedDp.cs
- XmlSchemaInferenceException.cs
- ImageClickEventArgs.cs
- DocumentApplication.cs
- LexicalChunk.cs
- IndexObject.cs
- FragmentQueryKB.cs
- BooleanFunctions.cs
- MenuItemCollection.cs
- DtrList.cs
- ReaderContextStackData.cs
- DispatcherOperation.cs
- UniqueIdentifierService.cs
- GridViewRowPresenter.cs
- ViewStateException.cs
- AvtEvent.cs
- CacheDict.cs
- Point3DCollection.cs
- SafeLocalAllocation.cs
- dtdvalidator.cs
- Enum.cs
- QilInvoke.cs
- ISAPIWorkerRequest.cs
- ColumnTypeConverter.cs
- PublishLicense.cs
- PageParser.cs
- SyndicationCategory.cs
- PersistChildrenAttribute.cs
- EdmError.cs
- PageWrapper.cs
- Int16Animation.cs
- SecurityUniqueId.cs
- RTLAwareMessageBox.cs
- Rfc2898DeriveBytes.cs
- RenamedEventArgs.cs
- QueryCursorEventArgs.cs
- TemplateBindingExtension.cs
- EntityClassGenerator.cs
- Ray3DHitTestResult.cs
- SynchronizedDispatch.cs
- MultilineStringConverter.cs
- CodeTypeOfExpression.cs
- Internal.cs
- SqlBooleanMismatchVisitor.cs
- RelationshipType.cs
- DependencyObjectPropertyDescriptor.cs
- MatrixValueSerializer.cs
- DependencyObject.cs
- ContentOperations.cs
- WebBrowser.cs
- Brush.cs
- DependencyPropertyAttribute.cs
- UnsafeNativeMethods.cs
- ArraySet.cs
- RequestUriProcessor.cs
- SpellerError.cs
- ExtendedProtectionPolicyTypeConverter.cs
- SessionEndingCancelEventArgs.cs
- UnsafeNativeMethods.cs