Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / objectresult_tresulttype.cs / 1305376 / objectresult_tresulttype.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupowner [....] //--------------------------------------------------------------------- namespace System.Data.Objects { using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Data.Metadata.Edm; using System.Data.Mapping; using System.Data.Objects.DataClasses; using System.Diagnostics; using System.Linq.Expressions; using System.Data.Common.Internal.Materialization; ////// This class implements IEnumerable of T and IDisposable. Instance of this class /// is returned from ObjectQuery<T>.Execute method. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] public sealed class ObjectResult: ObjectResult, IEnumerable { private Shaper _shaper; private DbDataReader _reader; private readonly EntitySet _singleEntitySet; private readonly TypeUsage _resultItemType; private readonly bool _readerOwned; private IBindingList _cachedBindingList; internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType) : this(shaper, singleEntitySet, resultItemType, true) { } internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType, bool readerOwned) { _shaper = shaper; _reader = _shaper.Reader; _singleEntitySet = singleEntitySet; _resultItemType = resultItemType; _readerOwned = readerOwned; } private void EnsureCanEnumerateResults() { if (null == _shaper) { // Enumerating more than once is not allowed. throw EntityUtil.CannotReEnumerateQueryResults(); } } /// /// Returns an enumerator that iterates through the collection. /// public IEnumeratorGetEnumerator() { EnsureCanEnumerateResults(); Shaper shaper = _shaper; _shaper = null; IEnumerator result = shaper.GetEnumerator(); return result; } /// /// Performs tasks associated with freeing, releasing, or resetting resources. /// public override void Dispose() { DbDataReader reader = _reader; _reader = null; if (null != reader && _readerOwned) { reader.Dispose(); } if (_shaper != null) { // This case includes when the ObjectResult is disposed before it // created an ObjectQueryEnumeration; at this time, the connection can be released if (_shaper.Context != null && _readerOwned) { _shaper.Context.ReleaseConnection(); } _shaper = null; } } internal override IEnumerator GetEnumeratorInternal() { return ((IEnumerable)this).GetEnumerator(); } internal override IList GetIListSourceListInternal() { // You can only enumerate the query results once, and the creation of an ObjectView consumes this enumeration. // However, there are situations where setting the DataSource of a control can result in multiple calls to this method. // In order to enable this scenario and allow direct binding to the ObjectResult instance, // the ObjectView is cached and returned on subsequent calls to this method. if (_cachedBindingList == null) { EnsureCanEnumerateResults(); bool forceReadOnly = this._shaper.MergeOption == MergeOption.NoTracking; _cachedBindingList = ObjectViewFactory.CreateViewForQuery (this._resultItemType, this, this._shaper.Context, forceReadOnly, this._singleEntitySet); } return _cachedBindingList; } public override Type ElementType { get { return typeof(T); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupowner [....] //--------------------------------------------------------------------- namespace System.Data.Objects { using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Data.Metadata.Edm; using System.Data.Mapping; using System.Data.Objects.DataClasses; using System.Diagnostics; using System.Linq.Expressions; using System.Data.Common.Internal.Materialization; ////// This class implements IEnumerable of T and IDisposable. Instance of this class /// is returned from ObjectQuery<T>.Execute method. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] public sealed class ObjectResult: ObjectResult, IEnumerable { private Shaper _shaper; private DbDataReader _reader; private readonly EntitySet _singleEntitySet; private readonly TypeUsage _resultItemType; private readonly bool _readerOwned; private IBindingList _cachedBindingList; internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType) : this(shaper, singleEntitySet, resultItemType, true) { } internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType, bool readerOwned) { _shaper = shaper; _reader = _shaper.Reader; _singleEntitySet = singleEntitySet; _resultItemType = resultItemType; _readerOwned = readerOwned; } private void EnsureCanEnumerateResults() { if (null == _shaper) { // Enumerating more than once is not allowed. throw EntityUtil.CannotReEnumerateQueryResults(); } } /// /// Returns an enumerator that iterates through the collection. /// public IEnumeratorGetEnumerator() { EnsureCanEnumerateResults(); Shaper shaper = _shaper; _shaper = null; IEnumerator result = shaper.GetEnumerator(); return result; } /// /// Performs tasks associated with freeing, releasing, or resetting resources. /// public override void Dispose() { DbDataReader reader = _reader; _reader = null; if (null != reader && _readerOwned) { reader.Dispose(); } if (_shaper != null) { // This case includes when the ObjectResult is disposed before it // created an ObjectQueryEnumeration; at this time, the connection can be released if (_shaper.Context != null && _readerOwned) { _shaper.Context.ReleaseConnection(); } _shaper = null; } } internal override IEnumerator GetEnumeratorInternal() { return ((IEnumerable)this).GetEnumerator(); } internal override IList GetIListSourceListInternal() { // You can only enumerate the query results once, and the creation of an ObjectView consumes this enumeration. // However, there are situations where setting the DataSource of a control can result in multiple calls to this method. // In order to enable this scenario and allow direct binding to the ObjectResult instance, // the ObjectView is cached and returned on subsequent calls to this method. if (_cachedBindingList == null) { EnsureCanEnumerateResults(); bool forceReadOnly = this._shaper.MergeOption == MergeOption.NoTracking; _cachedBindingList = ObjectViewFactory.CreateViewForQuery (this._resultItemType, this, this._shaper.Context, forceReadOnly, this._singleEntitySet); } return _cachedBindingList; } public override Type ElementType { get { return typeof(T); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UnsafeNativeMethods.cs
- EventLogQuery.cs
- BamlWriter.cs
- SchemaLookupTable.cs
- AppSettingsReader.cs
- EnvelopedPkcs7.cs
- ViewManager.cs
- COM2IPerPropertyBrowsingHandler.cs
- XmlSchemaValidationException.cs
- ResXResourceSet.cs
- MaterializeFromAtom.cs
- Size3D.cs
- WpfWebRequestHelper.cs
- ComplusEndpointConfigContainer.cs
- SmtpLoginAuthenticationModule.cs
- BuildProviderAppliesToAttribute.cs
- DBSchemaTable.cs
- DistinctQueryOperator.cs
- HyperLinkColumn.cs
- UriExt.cs
- CatalogPartChrome.cs
- DataProtection.cs
- AutoResizedEvent.cs
- CodeTypeMember.cs
- DashStyle.cs
- UIElementHelper.cs
- NavigationPropertyEmitter.cs
- StagingAreaInputItem.cs
- ChineseLunisolarCalendar.cs
- FileSystemEventArgs.cs
- MemberAssignmentAnalysis.cs
- XmlSchemaSearchPattern.cs
- CharacterBuffer.cs
- ColorIndependentAnimationStorage.cs
- ExternalException.cs
- WeakReferenceKey.cs
- BinaryObjectWriter.cs
- ipaddressinformationcollection.cs
- TreeViewItem.cs
- Directory.cs
- WebPartEditorOkVerb.cs
- RenameRuleObjectDialog.cs
- AlternateView.cs
- SupportingTokenDuplexChannel.cs
- MailHeaderInfo.cs
- SignedInfo.cs
- InfoCardBaseException.cs
- DispatcherSynchronizationContext.cs
- ReliableSessionBindingElementImporter.cs
- UITypeEditor.cs
- XMLSyntaxException.cs
- BinaryParser.cs
- VersionPair.cs
- InputBuffer.cs
- Condition.cs
- MessageUtil.cs
- TranslateTransform3D.cs
- ComplexObject.cs
- RadioButtonList.cs
- Function.cs
- StoreAnnotationsMap.cs
- EventArgs.cs
- FormsAuthenticationTicket.cs
- regiisutil.cs
- ParserContext.cs
- ResolveCompletedEventArgs.cs
- SequentialUshortCollection.cs
- TitleStyle.cs
- PackWebRequest.cs
- RouteUrlExpressionBuilder.cs
- FirewallWrapper.cs
- FileUtil.cs
- OdbcConnectionPoolProviderInfo.cs
- CompensationHandlingFilter.cs
- OdbcConnectionStringbuilder.cs
- IriParsingElement.cs
- XmlQualifiedNameTest.cs
- XmlAttributeAttribute.cs
- Parser.cs
- SafeHGlobalHandleCritical.cs
- TextElementEditingBehaviorAttribute.cs
- StandardMenuStripVerb.cs
- EntityDataSourceSelectedEventArgs.cs
- TextTreeTextBlock.cs
- Wrapper.cs
- SspiWrapper.cs
- Context.cs
- GenericUriParser.cs
- MatrixTransform.cs
- ContractNamespaceAttribute.cs
- XmlRawWriterWrapper.cs
- MatrixStack.cs
- OleDbPermission.cs
- FocusChangedEventArgs.cs
- NoPersistHandle.cs
- ParallelTimeline.cs
- DataGridViewRowCollection.cs
- EntityCodeGenerator.cs
- TextDecorationCollectionConverter.cs
- WorkflowApplicationTerminatedException.cs