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
- SupportingTokenDuplexChannel.cs
- XmlAttributeAttribute.cs
- XmlDocumentFragment.cs
- SoapMessage.cs
- SchemaElementLookUpTable.cs
- PropertyRef.cs
- ListMarkerSourceInfo.cs
- TemplateNameScope.cs
- ListDictionaryInternal.cs
- KoreanCalendar.cs
- OSEnvironmentHelper.cs
- controlskin.cs
- IChannel.cs
- ScriptingWebServicesSectionGroup.cs
- TemplatePagerField.cs
- ClientEventManager.cs
- FixedTextPointer.cs
- PrePostDescendentsWalker.cs
- ScriptReferenceBase.cs
- UnmanagedHandle.cs
- EngineSite.cs
- Control.cs
- ContentElementAutomationPeer.cs
- HttpListenerContext.cs
- DoubleCollectionValueSerializer.cs
- SystemEvents.cs
- RtfNavigator.cs
- AddInController.cs
- EncoderNLS.cs
- HuffModule.cs
- CodeAttachEventStatement.cs
- WebPartEventArgs.cs
- HelpEvent.cs
- FacetEnabledSchemaElement.cs
- PackagePart.cs
- BasicSecurityProfileVersion.cs
- _CookieModule.cs
- brushes.cs
- StringExpressionSet.cs
- DefaultWorkflowTransactionService.cs
- AlignmentXValidation.cs
- LocatorGroup.cs
- TextPointer.cs
- MultidimensionalArrayItemReference.cs
- PropagationProtocolsTracing.cs
- DataGridRowHeader.cs
- PersonalizationProvider.cs
- ThemeDictionaryExtension.cs
- TextMessageEncodingElement.cs
- ToolStripLocationCancelEventArgs.cs
- EntityDataSourceConfigureObjectContext.cs
- LoginUtil.cs
- InternalConfigSettingsFactory.cs
- HtmlEncodedRawTextWriter.cs
- TreeNodeCollectionEditorDialog.cs
- SecureStringHasher.cs
- OleDbTransaction.cs
- HtmlTableCellCollection.cs
- TabControl.cs
- SafeTimerHandle.cs
- CursorConverter.cs
- _LoggingObject.cs
- ItemMap.cs
- NativeCompoundFileAPIs.cs
- ListDataHelper.cs
- CodeTypeReference.cs
- XmlSortKeyAccumulator.cs
- TableLayoutCellPaintEventArgs.cs
- documentsequencetextpointer.cs
- HideDisabledControlAdapter.cs
- RegexParser.cs
- PasswordRecovery.cs
- PeerToPeerException.cs
- FieldMetadata.cs
- ModifiableIteratorCollection.cs
- LambdaCompiler.Address.cs
- TextServicesCompartmentContext.cs
- CryptoKeySecurity.cs
- IArgumentProvider.cs
- HtmlMobileTextWriter.cs
- ConnectionConsumerAttribute.cs
- TableCellAutomationPeer.cs
- DesignerHelpers.cs
- Math.cs
- GCHandleCookieTable.cs
- RangeValidator.cs
- ViewBase.cs
- Parameter.cs
- DockingAttribute.cs
- SqlXmlStorage.cs
- FontConverter.cs
- BridgeDataReader.cs
- DispatcherOperation.cs
- DocumentViewerHelper.cs
- __Filters.cs
- SymbolDocumentGenerator.cs
- ApplicationInterop.cs
- OperatingSystem.cs
- TableParagraph.cs
- JoinCqlBlock.cs