Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Objects / objectresult_tresulttype.cs / 1 / 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 IBindingList _cachedBindingList; internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType) { _shaper = shaper; _reader = _shaper.Reader; _singleEntitySet = singleEntitySet; _resultItemType = resultItemType; } 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) { 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) { _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 IBindingList _cachedBindingList; internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType) { _shaper = shaper; _reader = _shaper.Reader; _singleEntitySet = singleEntitySet; _resultItemType = resultItemType; } 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) { 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) { _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
- DSASignatureFormatter.cs
- AuthenticationService.cs
- StrokeCollection2.cs
- MatchingStyle.cs
- MaterialCollection.cs
- DataGridHyperlinkColumn.cs
- MessageLogger.cs
- HwndKeyboardInputProvider.cs
- TypeUtils.cs
- WinInetCache.cs
- CodeAccessSecurityEngine.cs
- UnmanagedHandle.cs
- RegexReplacement.cs
- SystemThemeKey.cs
- DataGridViewCellCollection.cs
- Grant.cs
- GeometryModel3D.cs
- NewItemsContextMenuStrip.cs
- SamlConstants.cs
- AssemblyUtil.cs
- AudioFormatConverter.cs
- KeyConstraint.cs
- ExceptionNotification.cs
- MsmqActivation.cs
- CorrelationManager.cs
- AppDomainUnloadedException.cs
- Odbc32.cs
- Function.cs
- BinaryFormatterWriter.cs
- DocumentReference.cs
- TransactedReceiveData.cs
- NetworkInformationPermission.cs
- GridLength.cs
- DataGridViewColumnCollection.cs
- TemplateControl.cs
- BaseParser.cs
- ElementAction.cs
- ImageBrush.cs
- DesignTimeTemplateParser.cs
- TableCellCollection.cs
- MasterPageCodeDomTreeGenerator.cs
- _OverlappedAsyncResult.cs
- OleDbException.cs
- DataMisalignedException.cs
- RegexCompiler.cs
- NavigationHelper.cs
- PointAnimationClockResource.cs
- TreeIterators.cs
- ArrangedElementCollection.cs
- DbCommandTree.cs
- COM2ComponentEditor.cs
- SafeNativeMethods.cs
- SQLByte.cs
- LambdaCompiler.Logical.cs
- SettingsPropertyValue.cs
- NoResizeSelectionBorderGlyph.cs
- RelationshipSet.cs
- SubMenuStyle.cs
- SystemException.cs
- SchemaImporterExtensionsSection.cs
- SoapElementAttribute.cs
- View.cs
- SqlBulkCopy.cs
- AvtEvent.cs
- PropertyReferenceExtension.cs
- DataGridViewImageCell.cs
- Variable.cs
- PrtCap_Reader.cs
- streamingZipPartStream.cs
- DesignerDataConnection.cs
- HttpFileCollectionWrapper.cs
- TableItemStyle.cs
- SqlErrorCollection.cs
- TableDetailsRow.cs
- QueryServiceConfigHandle.cs
- ZipPackage.cs
- PartialCachingAttribute.cs
- Thread.cs
- XmlPreloadedResolver.cs
- ListItemCollection.cs
- EmptyImpersonationContext.cs
- BinaryMethodMessage.cs
- PatternMatcher.cs
- WebServiceData.cs
- DSACryptoServiceProvider.cs
- util.cs
- SystemFonts.cs
- ParameterToken.cs
- StrongBox.cs
- PageVisual.cs
- AnnotationResourceCollection.cs
- PkcsUtils.cs
- _emptywebproxy.cs
- TreeView.cs
- FrameworkContextData.cs
- BypassElement.cs
- OutputCacheSettingsSection.cs
- ExpressionBindings.cs
- PathFigure.cs
- ChtmlTextBoxAdapter.cs