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
- TableRowGroup.cs
- OperationDescriptionCollection.cs
- StrongNameIdentityPermission.cs
- OleDbDataAdapter.cs
- ReadWriteSpinLock.cs
- ToolBarButtonDesigner.cs
- DataSourceIDConverter.cs
- PopupEventArgs.cs
- WindowsToolbarItemAsMenuItem.cs
- TagMapInfo.cs
- XmlSchemas.cs
- WeakReadOnlyCollection.cs
- TextHidden.cs
- Utils.cs
- ConnectionInterfaceCollection.cs
- filewebrequest.cs
- AuthenticationModuleElement.cs
- XhtmlBasicLiteralTextAdapter.cs
- DataRow.cs
- XmlSchemaAny.cs
- WindowsEditBox.cs
- HttpClientCertificate.cs
- TriggerAction.cs
- ExtensionSimplifierMarkupObject.cs
- RtType.cs
- RepeaterCommandEventArgs.cs
- DocumentXPathNavigator.cs
- StatusStrip.cs
- ValueOfAction.cs
- TypeForwardedToAttribute.cs
- DataServiceConfiguration.cs
- HtmlCommandAdapter.cs
- SqlCommandBuilder.cs
- DefaultEvaluationContext.cs
- XPathDocumentNavigator.cs
- PrePrepareMethodAttribute.cs
- Attachment.cs
- SerialReceived.cs
- XmlSignificantWhitespace.cs
- CheckBoxBaseAdapter.cs
- BitmapEffectInput.cs
- _OSSOCK.cs
- ToolboxService.cs
- WmfPlaceableFileHeader.cs
- BasicExpressionVisitor.cs
- ButtonFlatAdapter.cs
- IteratorFilter.cs
- PrintingPermission.cs
- TextRunTypographyProperties.cs
- IDataContractSurrogate.cs
- CompilerScope.Storage.cs
- InfoCardTrace.cs
- ClientReliableChannelBinder.cs
- AudioBase.cs
- MsmqIntegrationReceiveParameters.cs
- BoolExpressionVisitors.cs
- XmlDataSourceView.cs
- XmlToDatasetMap.cs
- XmlIlGenerator.cs
- SamlAssertionKeyIdentifierClause.cs
- FormsAuthenticationConfiguration.cs
- VariableQuery.cs
- PatternMatcher.cs
- ButtonBaseAutomationPeer.cs
- XmlWhitespace.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- TraceFilter.cs
- PersonalizableTypeEntry.cs
- CharacterString.cs
- CodeSubDirectoriesCollection.cs
- SmtpMail.cs
- DynamicDocumentPaginator.cs
- ActiveXHost.cs
- CfgParser.cs
- ImageFormat.cs
- SqlEnums.cs
- WorkflowInlining.cs
- WebPageTraceListener.cs
- ReservationNotFoundException.cs
- ResXResourceSet.cs
- GridViewAutomationPeer.cs
- BaseEntityWrapper.cs
- InstanceCreationEditor.cs
- ToolStripPanel.cs
- RadioButtonAutomationPeer.cs
- MetadataArtifactLoaderComposite.cs
- StorageComplexTypeMapping.cs
- SqlNodeTypeOperators.cs
- PeerInputChannelListener.cs
- EventProviderWriter.cs
- Token.cs
- NotifyCollectionChangedEventArgs.cs
- ListViewItemSelectionChangedEvent.cs
- SelectionRange.cs
- MetadataArtifactLoaderCompositeFile.cs
- HwndHost.cs
- Transform3DGroup.cs
- DesignRelationCollection.cs
- _WinHttpWebProxyDataBuilder.cs
- SoapMessage.cs