Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DLinq / Dlinq / CompiledQuery.cs / 1 / CompiledQuery.cs
using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Linq.Expressions; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Xml; using System.Transactions; using System.Data.Linq.Provider; using System.Diagnostics.CodeAnalysis; namespace System.Data.Linq { public sealed class CompiledQuery { LambdaExpression query; ICompiledQuery compiled; private CompiledQuery(LambdaExpression query) { this.query = query; } public LambdaExpression Expression { get { return this.query; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static FuncCompile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } private static bool UseExpressionCompile(LambdaExpression query) { return typeof(ITable).IsAssignableFrom(query.Body.Type); } private TResult Invoke (TArg0 arg0) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0}); } private TResult Invoke (TArg0 arg0, TArg1 arg1) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0, arg1}); } private TResult Invoke (TArg0 arg0, TArg1 arg1, TArg2 arg2) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0, arg1, arg2}); } private TResult Invoke (TArg0 arg0, TArg1 arg1, TArg2 arg2, TArg3 arg3) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0, arg1, arg2, arg3}); } private object ExecuteQuery(DataContext context, object[] args) { if (context == null) { throw Error.ArgumentNull("context"); } if (this.compiled == null) { lock (this) { if (this.compiled == null) { this.compiled = context.Provider.Compile(this.query); } } } return this.compiled.Execute(context.Provider, args).ReturnValue; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Linq.Expressions; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Xml; using System.Transactions; using System.Data.Linq.Provider; using System.Diagnostics.CodeAnalysis; namespace System.Data.Linq { public sealed class CompiledQuery { LambdaExpression query; ICompiledQuery compiled; private CompiledQuery(LambdaExpression query) { this.query = query; } public LambdaExpression Expression { get { return this.query; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")] public static Func Compile (Expression > query) where TArg0 : DataContext { if (query == null) { Error.ArgumentNull("query"); } if (UseExpressionCompile(query)) { return query.Compile(); } else { return new CompiledQuery(query).Invoke ; } } private static bool UseExpressionCompile(LambdaExpression query) { return typeof(ITable).IsAssignableFrom(query.Body.Type); } private TResult Invoke (TArg0 arg0) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0}); } private TResult Invoke (TArg0 arg0, TArg1 arg1) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0, arg1}); } private TResult Invoke (TArg0 arg0, TArg1 arg1, TArg2 arg2) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0, arg1, arg2}); } private TResult Invoke (TArg0 arg0, TArg1 arg1, TArg2 arg2, TArg3 arg3) where TArg0 : DataContext { return (TResult) this.ExecuteQuery(arg0, new object[] {arg0, arg1, arg2, arg3}); } private object ExecuteQuery(DataContext context, object[] args) { if (context == null) { throw Error.ArgumentNull("context"); } if (this.compiled == null) { lock (this) { if (this.compiled == null) { this.compiled = context.Provider.Compile(this.query); } } } return this.compiled.Execute(context.Provider, args).ReturnValue; } } } // 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
- DeferredReference.cs
- ItemsControl.cs
- DSASignatureDeformatter.cs
- MultipleViewPattern.cs
- figurelength.cs
- ToolZone.cs
- RequestStatusBarUpdateEventArgs.cs
- SQLBoolean.cs
- DateTimeOffsetConverter.cs
- EventLogInformation.cs
- SortDescriptionCollection.cs
- EncodingNLS.cs
- RefreshEventArgs.cs
- SqlInternalConnectionSmi.cs
- StylusSystemGestureEventArgs.cs
- WebEvents.cs
- BamlRecordReader.cs
- NoResizeHandleGlyph.cs
- FacetValueContainer.cs
- PeerTransportCredentialType.cs
- XmlAttributeCollection.cs
- FreezableCollection.cs
- ProfileEventArgs.cs
- PerformanceCounterManager.cs
- HttpVersion.cs
- QuotaThrottle.cs
- DataSourceView.cs
- SerializableAttribute.cs
- ConstraintEnumerator.cs
- ConfigurationElementCollection.cs
- SrgsOneOf.cs
- ObjectReaderCompiler.cs
- CodeFieldReferenceExpression.cs
- ModelService.cs
- FrameworkPropertyMetadata.cs
- MenuItem.cs
- DescendantQuery.cs
- Codec.cs
- OutputCache.cs
- SmtpClient.cs
- CreateRefExpr.cs
- EdmItemCollection.cs
- IdentityModelDictionary.cs
- IApplicationTrustManager.cs
- QueryPrefixOp.cs
- DownloadProgressEventArgs.cs
- SelectionRangeConverter.cs
- BindingCollectionElement.cs
- InternalConfigSettingsFactory.cs
- Point.cs
- HandlerBase.cs
- SqlInfoMessageEvent.cs
- AutomationPropertyChangedEventArgs.cs
- NullReferenceException.cs
- InstancePersistenceContext.cs
- OutOfMemoryException.cs
- Simplifier.cs
- precedingquery.cs
- LabelDesigner.cs
- AccessKeyManager.cs
- Html32TextWriter.cs
- OdbcReferenceCollection.cs
- XmlSchemaAttributeGroup.cs
- EngineSiteSapi.cs
- TraceEventCache.cs
- XmlAttributeCollection.cs
- HtmlTableCell.cs
- XmlReflectionMember.cs
- OdbcConnectionString.cs
- Verify.cs
- BamlWriter.cs
- UrlRoutingModule.cs
- MetadataFile.cs
- UnsafeNativeMethods.cs
- UTF7Encoding.cs
- SingleConverter.cs
- DrawingAttributeSerializer.cs
- FixedSOMLineRanges.cs
- CaseCqlBlock.cs
- SqlDataSourceQueryEditorForm.cs
- PerformanceCounterPermissionEntryCollection.cs
- ScrollableControl.cs
- TypeDependencyAttribute.cs
- AsyncResult.cs
- ProgressBarHighlightConverter.cs
- DrawListViewColumnHeaderEventArgs.cs
- SqlDependencyListener.cs
- AuditLogLocation.cs
- ConsumerConnectionPoint.cs
- CqlWriter.cs
- Schema.cs
- StringDictionary.cs
- ResourceReferenceKeyNotFoundException.cs
- Figure.cs
- WindowsIPAddress.cs
- UInt32.cs
- ApplicationBuildProvider.cs
- DocumentManager.cs
- ActiveXHelper.cs
- CaseInsensitiveOrdinalStringComparer.cs