Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / ELinq / ObjectQueryProvider.cs / 1305376 / ObjectQueryProvider.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Data.Objects.Internal; using System.Data.Metadata.Edm; using System.Diagnostics; using System.Linq; using System.Linq.Expressions; using System.Reflection; namespace System.Data.Objects.ELinq { ////// LINQ query provider implementation. /// internal sealed class ObjectQueryProvider : IQueryProvider { private readonly ObjectContext _context; internal ObjectQueryProvider(ObjectContext context) { Debug.Assert(null != context, "context must be given"); _context = context; } ////// Creates a new query instance using the given LINQ expresion. /// The current query is used to produce the context for the new query, but none of its logic /// is used. /// ///Element type for query result. /// LINQ expression forming the query. ///ObjectQuery implementing the expression logic. IQueryableIQueryProvider.CreateQuery(Expression expression) { EntityUtil.CheckArgumentNull(expression, "expression"); if (!typeof(IQueryable).IsAssignableFrom(expression.Type)) { throw EntityUtil.Argument(System.Data.Entity.Strings.ELinq_ExpressionMustBeIQueryable, "expression"); } ObjectQueryquery = CreateQuery(expression); return query; } ////// Executes the given LINQ expression returning a single value, or null if the query yields /// no results. If the return type is unexpected, raises a cast exception. /// The current query is used to produce the context for the new query, but none of its logic /// is used. /// ///Type of returned value. /// Expression to evaluate. ///Single result from execution. S IQueryProvider.Execute(Expression expression) { EntityUtil.CheckArgumentNull(expression, "expression"); ObjectQueryquery = CreateQuery(expression); return ExecuteSingle(query, expression); } ////// Creates a new query instance using the given LINQ expresion. /// The current query is used to produce the context for the new query, but none of its logic /// is used. /// /// Expression forming the query. ///ObjectQuery instance implementing the given expression. IQueryable IQueryProvider.CreateQuery(Expression expression) { EntityUtil.CheckArgumentNull(expression, "expression"); if (!typeof(IQueryable).IsAssignableFrom(expression.Type)) { throw EntityUtil.Argument(System.Data.Entity.Strings.ELinq_ExpressionMustBeIQueryable, "expression"); } // Determine the type of the query instance by binding generic parameter in Query<>.Queryable // (based on element type of expression) Type elementType = TypeSystem.GetElementType(expression.Type); ObjectQuery query = CreateQuery(expression, elementType); return query; } ////// Executes the given LINQ expression returning a single value, or null if the query yields /// no results. /// The current query is used to produce the context for the new query, but none of its logic /// is used. /// /// Expression to evaluate. ///Single result from execution. object IQueryProvider.Execute(Expression expression) { EntityUtil.CheckArgumentNull(expression, "expression"); ObjectQuery query = CreateQuery(expression, expression.Type); IEnumerable
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TransformedBitmap.cs
- DataGridViewTopRowAccessibleObject.cs
- SqlWorkflowPersistenceService.cs
- XPathDocumentIterator.cs
- OutputCacheProfileCollection.cs
- GPPOINTF.cs
- ReferencedAssembly.cs
- categoryentry.cs
- WindowsFormsSectionHandler.cs
- HelpInfo.cs
- Track.cs
- LineServicesRun.cs
- ProcessStartInfo.cs
- FileDialog.cs
- CodeDirectionExpression.cs
- SiteMapNodeItem.cs
- PropertyItem.cs
- ZipIOCentralDirectoryBlock.cs
- TextRange.cs
- Clause.cs
- Highlights.cs
- TypeConverterHelper.cs
- MenuItemCollection.cs
- FlowDocumentReader.cs
- ConfigXmlWhitespace.cs
- AsyncInvokeContext.cs
- TextRangeEdit.cs
- DelayLoadType.cs
- SafeSystemMetrics.cs
- XsltException.cs
- ColorTransform.cs
- AsyncPostBackTrigger.cs
- AssemblyNameProxy.cs
- ScrollViewer.cs
- ActivityBindForm.cs
- BlurBitmapEffect.cs
- SafeRightsManagementHandle.cs
- RoutedUICommand.cs
- SystemUnicastIPAddressInformation.cs
- LocationEnvironment.cs
- SystemIcmpV4Statistics.cs
- SqlProcedureAttribute.cs
- GraphicsPathIterator.cs
- Transaction.cs
- LocalBuilder.cs
- NameObjectCollectionBase.cs
- path.cs
- CodeArrayCreateExpression.cs
- BitmapEffectGeneralTransform.cs
- ColorMap.cs
- Timeline.cs
- XamlTreeBuilder.cs
- FilterUserControlBase.cs
- ConfigurationValues.cs
- PropertiesTab.cs
- BatchStream.cs
- ToolStripScrollButton.cs
- GradientSpreadMethodValidation.cs
- Item.cs
- Opcode.cs
- CellQuery.cs
- TypeBuilderInstantiation.cs
- StrokeCollection2.cs
- CopyAttributesAction.cs
- SafeNativeMemoryHandle.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- COM2ColorConverter.cs
- RsaSecurityToken.cs
- TransformerInfo.cs
- ResolvedKeyFrameEntry.cs
- Int32CollectionConverter.cs
- RawAppCommandInputReport.cs
- LogConverter.cs
- CommandDevice.cs
- DBConnection.cs
- WindowsPen.cs
- SystemResourceKey.cs
- DbInsertCommandTree.cs
- AttributeSetAction.cs
- DrawListViewColumnHeaderEventArgs.cs
- ResourceExpressionBuilder.cs
- WindowsRegion.cs
- CustomCategoryAttribute.cs
- HttpModuleCollection.cs
- WebPartEditVerb.cs
- DelayedRegex.cs
- StyleTypedPropertyAttribute.cs
- TextRenderer.cs
- Evidence.cs
- SerializationStore.cs
- WebPartHeaderCloseVerb.cs
- CapiSymmetricAlgorithm.cs
- Claim.cs
- ZoneLinkButton.cs
- DataMisalignedException.cs
- DirectoryGroupQuery.cs
- MouseEvent.cs
- ResourcesChangeInfo.cs
- ManipulationStartedEventArgs.cs
- PerformanceCounterPermissionEntry.cs