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 / 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
- ComplexTypeEmitter.cs
- MatrixTransform.cs
- SectionUpdates.cs
- AutomationElementIdentifiers.cs
- CopyAttributesAction.cs
- ModelUtilities.cs
- SamlAttribute.cs
- SchemaUtility.cs
- RowToFieldTransformer.cs
- ThreadStateException.cs
- UpdateCompiler.cs
- LinqDataSourceDisposeEventArgs.cs
- HtmlTableRowCollection.cs
- RankException.cs
- FrameworkTextComposition.cs
- XmlQualifiedName.cs
- ipaddressinformationcollection.cs
- XmlJsonWriter.cs
- DATA_BLOB.cs
- ExtensibleClassFactory.cs
- NGCSerializationManager.cs
- CompleteWizardStep.cs
- DATA_BLOB.cs
- ResourcePermissionBase.cs
- ListViewGroupItemCollection.cs
- HitTestWithPointDrawingContextWalker.cs
- RequestCacheEntry.cs
- WpfSharedBamlSchemaContext.cs
- SmiGettersStream.cs
- MemberDomainMap.cs
- CodeBinaryOperatorExpression.cs
- MetadataArtifactLoaderFile.cs
- SiteMapNodeItem.cs
- ImpersonationContext.cs
- selecteditemcollection.cs
- HwndHost.cs
- Object.cs
- UriWriter.cs
- BufferedReceiveManager.cs
- Int16Animation.cs
- CalendarKeyboardHelper.cs
- IpcServerChannel.cs
- FontResourceCache.cs
- AsyncStreamReader.cs
- sqlcontext.cs
- ExceptionUtil.cs
- OutOfMemoryException.cs
- DbDeleteCommandTree.cs
- CodeCastExpression.cs
- ImmutableAssemblyCacheEntry.cs
- ToolStripButton.cs
- FlowDocumentFormatter.cs
- ErrorHandlerFaultInfo.cs
- XmlJsonWriter.cs
- ObjectDataSourceMethodEventArgs.cs
- TcpConnectionPool.cs
- StrokeDescriptor.cs
- ObjectDataProvider.cs
- ImageAnimator.cs
- mediaeventargs.cs
- TextWriterTraceListener.cs
- Matrix3DValueSerializer.cs
- XmlCustomFormatter.cs
- QilExpression.cs
- xmlfixedPageInfo.cs
- ChannelManager.cs
- CommonDialog.cs
- COM2Enum.cs
- RegularExpressionValidator.cs
- WebPartConnection.cs
- AttributeData.cs
- SerializationAttributes.cs
- ToolStripContainerDesigner.cs
- StyleReferenceConverter.cs
- CompilationRelaxations.cs
- HatchBrush.cs
- RightsManagementPermission.cs
- DeploymentSection.cs
- SymbolEqualComparer.cs
- EntitySqlException.cs
- CommandSet.cs
- ErrorFormatterPage.cs
- TextParentUndoUnit.cs
- TextBoxBase.cs
- MarshalByValueComponent.cs
- XmlResolver.cs
- DataObjectFieldAttribute.cs
- RadioButtonList.cs
- HideDisabledControlAdapter.cs
- Color.cs
- RequestSecurityTokenResponseCollection.cs
- GetWorkflowTree.cs
- DESCryptoServiceProvider.cs
- DocumentReferenceCollection.cs
- InteropDesigner.xaml.cs
- ExceptionUtil.cs
- XmlSchemaElement.cs
- InOutArgument.cs
- ObjectKeyFrameCollection.cs
- WorkflowPrinting.cs