Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Objects / objectresult_tresulttype.cs / 2 / 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
- SQLMoney.cs
- DataServiceExpressionVisitor.cs
- SystemIPInterfaceProperties.cs
- UrlRoutingHandler.cs
- ProfileSettings.cs
- DefaultPropertyAttribute.cs
- Debug.cs
- sqlpipe.cs
- ALinqExpressionVisitor.cs
- ManagedWndProcTracker.cs
- GatewayDefinition.cs
- EventLogWatcher.cs
- CompositeTypefaceMetrics.cs
- XmlEnumAttribute.cs
- SpecularMaterial.cs
- TwoPhaseCommit.cs
- PhoneCall.cs
- IRCollection.cs
- EntitySetBaseCollection.cs
- SchemaMapping.cs
- CustomSignedXml.cs
- SafeWaitHandle.cs
- CalendarAutoFormatDialog.cs
- DataGridViewRowPostPaintEventArgs.cs
- dataprotectionpermission.cs
- MorphHelper.cs
- FragmentQuery.cs
- _ListenerResponseStream.cs
- ProxyHwnd.cs
- XmlAttributeCollection.cs
- SpeechSeg.cs
- TimeSpan.cs
- InputElement.cs
- FileLogRecordStream.cs
- HijriCalendar.cs
- HttpClientCertificate.cs
- ResourceAttributes.cs
- FilterElement.cs
- _CacheStreams.cs
- Single.cs
- DefaultAuthorizationContext.cs
- RenderDataDrawingContext.cs
- MachineKeyConverter.cs
- IndexedDataBuffer.cs
- ThreadExceptionDialog.cs
- Process.cs
- TracingConnectionListener.cs
- TextSchema.cs
- SizeChangedInfo.cs
- LifetimeMonitor.cs
- XmlSchemaException.cs
- CounterSampleCalculator.cs
- FileFormatException.cs
- SplayTreeNode.cs
- GeometryDrawing.cs
- OpCodes.cs
- MSAAWinEventWrap.cs
- SqlRemoveConstantOrderBy.cs
- PreProcessInputEventArgs.cs
- AlternateViewCollection.cs
- BamlLocalizationDictionary.cs
- RelationshipWrapper.cs
- DurableInstance.cs
- PatternMatcher.cs
- WebPartDisplayMode.cs
- XamlHostingSection.cs
- Transform.cs
- FileDialogCustomPlace.cs
- DataGridViewImageCell.cs
- Registry.cs
- xmlfixedPageInfo.cs
- EntityDataSourceColumn.cs
- CuspData.cs
- IdentityHolder.cs
- SQLByteStorage.cs
- CacheSection.cs
- ThreadStartException.cs
- SqlCommand.cs
- RectangleHotSpot.cs
- TypeConverterAttribute.cs
- WindowsServiceElement.cs
- SqlXmlStorage.cs
- IgnorePropertiesAttribute.cs
- HwndHost.cs
- InboundActivityHelper.cs
- WebServiceMethodData.cs
- CaseExpr.cs
- JsonUriDataContract.cs
- Group.cs
- TransformConverter.cs
- AxisAngleRotation3D.cs
- HtmlInputCheckBox.cs
- ExpressionBindings.cs
- Visual3D.cs
- DetailsViewModeEventArgs.cs
- ImageKeyConverter.cs
- WebPartEventArgs.cs
- EndpointBehaviorElement.cs
- SerializationIncompleteException.cs
- UpdateProgress.cs