Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- AssemblyAssociatedContentFileAttribute.cs
- MethodCallConverter.cs
- PersonalizationStateQuery.cs
- ADMembershipUser.cs
- ToolStripManager.cs
- BasicViewGenerator.cs
- ToolStripItemEventArgs.cs
- Latin1Encoding.cs
- AddressHeader.cs
- ArrayElementGridEntry.cs
- ExtensionElement.cs
- fixedPageContentExtractor.cs
- FastEncoderStatics.cs
- DataContext.cs
- Misc.cs
- ServiceRouteHandler.cs
- Lease.cs
- ImageMapEventArgs.cs
- TextEditorCharacters.cs
- SignatureConfirmationElement.cs
- SerializerProvider.cs
- ILGenerator.cs
- Win32SafeHandles.cs
- ToolStripGripRenderEventArgs.cs
- XmlDataSourceNodeDescriptor.cs
- ListViewSortEventArgs.cs
- StaticFileHandler.cs
- WebCategoryAttribute.cs
- MatrixTransform3D.cs
- TypeConstant.cs
- RadioButtonFlatAdapter.cs
- PrefixQName.cs
- GroupLabel.cs
- ComboBoxItem.cs
- ConversionHelper.cs
- BaseInfoTable.cs
- FixedSchema.cs
- InertiaTranslationBehavior.cs
- ActivationServices.cs
- XmlStringTable.cs
- BamlVersionHeader.cs
- SplashScreenNativeMethods.cs
- GetCardDetailsRequest.cs
- NotificationContext.cs
- Transform.cs
- Highlights.cs
- WS2007HttpBindingCollectionElement.cs
- EmptyControlCollection.cs
- NonVisualControlAttribute.cs
- ScriptIgnoreAttribute.cs
- AdPostCacheSubstitution.cs
- WebPartCatalogAddVerb.cs
- HtmlTextBoxAdapter.cs
- SimpleHandlerBuildProvider.cs
- PreProcessInputEventArgs.cs
- QilSortKey.cs
- ConstraintConverter.cs
- BinaryCommonClasses.cs
- StateItem.cs
- IsolationInterop.cs
- SharedHttpTransportManager.cs
- SchemaNotation.cs
- DictionaryItemsCollection.cs
- XmlSchemaComplexType.cs
- NativeRecognizer.cs
- CategoryNameCollection.cs
- ConfigurationPermission.cs
- OrCondition.cs
- WebPartCollection.cs
- SyndicationSerializer.cs
- TemplateBindingExtensionConverter.cs
- oledbconnectionstring.cs
- InnerItemCollectionView.cs
- ComplexObject.cs
- TileBrush.cs
- WindowsSspiNegotiation.cs
- WorkflowTransactionService.cs
- ControlCodeDomSerializer.cs
- XmlWrappingWriter.cs
- PartitionResolver.cs
- DataGridParentRows.cs
- EmptyCollection.cs
- OrderPreservingSpoolingTask.cs
- GroupQuery.cs
- NameValueFileSectionHandler.cs
- SpeakCompletedEventArgs.cs
- HttpHandlersInstallComponent.cs
- SecurityContext.cs
- TreeNodeEventArgs.cs
- TypeValidationEventArgs.cs
- EmbeddedMailObjectsCollection.cs
- IndentTextWriter.cs
- Helper.cs
- CommandCollectionEditor.cs
- EntitySetRetriever.cs
- CodeStatement.cs
- DataGridViewCellStyleConverter.cs
- WebPartConnectionsConnectVerb.cs
- ApplicationCommands.cs
- SpotLight.cs