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
- ObjectHelper.cs
- DataGridViewCellValidatingEventArgs.cs
- ObfuscationAttribute.cs
- PagesChangedEventArgs.cs
- SqlBulkCopy.cs
- Model3DGroup.cs
- Button.cs
- dbenumerator.cs
- CompilerScope.cs
- InheritedPropertyChangedEventArgs.cs
- MultitargetUtil.cs
- HierarchicalDataSourceDesigner.cs
- Track.cs
- ContentDisposition.cs
- TableSectionStyle.cs
- CreatingCookieEventArgs.cs
- XmlAttributeAttribute.cs
- TdsParserStateObject.cs
- BaseTemplateParser.cs
- Model3D.cs
- DataGridState.cs
- TableLayoutStyleCollection.cs
- Stacktrace.cs
- PersistenceTypeAttribute.cs
- SQLDouble.cs
- autovalidator.cs
- StoreContentChangedEventArgs.cs
- ItemDragEvent.cs
- OracleException.cs
- SafeNativeMethods.cs
- SHA1Cng.cs
- ExpressionTable.cs
- HierarchicalDataBoundControl.cs
- WsatEtwTraceListener.cs
- Track.cs
- EncryptedPackageFilter.cs
- ComponentCollection.cs
- ResourceContainer.cs
- ZipIOFileItemStream.cs
- DetailsViewDesigner.cs
- RequestCache.cs
- AssemblyHash.cs
- DataGridViewTextBoxColumn.cs
- FixedTextView.cs
- VariableQuery.cs
- Fonts.cs
- ProcessThreadCollection.cs
- ResXResourceWriter.cs
- ListViewItemSelectionChangedEvent.cs
- TextEditorCharacters.cs
- SettingsProviderCollection.cs
- METAHEADER.cs
- TimerEventSubscription.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- RemoteWebConfigurationHostStream.cs
- WebBaseEventKeyComparer.cs
- XPathAncestorIterator.cs
- EventPropertyMap.cs
- XmlSchemaAnnotated.cs
- CallbackHandler.cs
- EmbeddedMailObjectsCollection.cs
- ParentUndoUnit.cs
- TransformerInfo.cs
- PassportAuthentication.cs
- codemethodreferenceexpression.cs
- NamespaceExpr.cs
- _CookieModule.cs
- TableRow.cs
- RadioButtonPopupAdapter.cs
- ProgressBarRenderer.cs
- PartialToken.cs
- UpdateEventArgs.cs
- Signature.cs
- ErrorRuntimeConfig.cs
- CodeCatchClauseCollection.cs
- EntityFrameworkVersions.cs
- VisualStyleTypesAndProperties.cs
- ContextMarshalException.cs
- SerializationSectionGroup.cs
- Journal.cs
- ServiceHttpModule.cs
- DocumentSequenceHighlightLayer.cs
- WindowsTab.cs
- SqlCommandBuilder.cs
- SliderAutomationPeer.cs
- MSAAWinEventWrap.cs
- safemediahandle.cs
- LoginUtil.cs
- filewebrequest.cs
- DataMemberAttribute.cs
- RoleBoolean.cs
- ValidationRule.cs
- RadioButtonDesigner.cs
- CodeArrayIndexerExpression.cs
- UpDownBaseDesigner.cs
- VerificationAttribute.cs
- ThreadStaticAttribute.cs
- ManagementBaseObject.cs
- EventlogProvider.cs
- ParentQuery.cs