Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / objectresult_tresulttype.cs / 1305376 / 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 readonly bool _readerOwned; private IBindingList _cachedBindingList; internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType) : this(shaper, singleEntitySet, resultItemType, true) { } internal ObjectResult(Shaper shaper, EntitySet singleEntitySet, TypeUsage resultItemType, bool readerOwned) { _shaper = shaper; _reader = _shaper.Reader; _singleEntitySet = singleEntitySet; _resultItemType = resultItemType; _readerOwned = readerOwned; } 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 && _readerOwned) { 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 && _readerOwned) { _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
- PointAnimationUsingPath.cs
- XamlRtfConverter.cs
- IsolationInterop.cs
- NeutralResourcesLanguageAttribute.cs
- hebrewshape.cs
- NetworkStream.cs
- TemplateDefinition.cs
- RowToFieldTransformer.cs
- ExceptionNotification.cs
- Resources.Designer.cs
- InstalledFontCollection.cs
- StateDesigner.Layouts.cs
- XdrBuilder.cs
- AggregateNode.cs
- XmlSchemaDatatype.cs
- SmiTypedGetterSetter.cs
- SetterBase.cs
- Int64KeyFrameCollection.cs
- VirtualPathData.cs
- FileDialogCustomPlacesCollection.cs
- XmlSchemaSimpleTypeRestriction.cs
- LinqTreeNodeEvaluator.cs
- GenericUriParser.cs
- FolderNameEditor.cs
- SynchronizationContext.cs
- XPathCompileException.cs
- HttpMethodAttribute.cs
- IgnoreSectionHandler.cs
- WindowPattern.cs
- CustomCategoryAttribute.cs
- WinEventHandler.cs
- RegionIterator.cs
- FixedFindEngine.cs
- SqlTriggerAttribute.cs
- DiscoveryInnerClientAdhoc11.cs
- InputMethodStateChangeEventArgs.cs
- System.Data_BID.cs
- KeyValueSerializer.cs
- ServiceProviders.cs
- SiteOfOriginPart.cs
- NetNamedPipeBinding.cs
- DbParameterHelper.cs
- Repeater.cs
- ListViewGroupConverter.cs
- DiscoveryDefaults.cs
- DictionaryGlobals.cs
- XmlSchemaAny.cs
- Crc32Helper.cs
- PropertyMap.cs
- ProviderIncompatibleException.cs
- TextEditorSelection.cs
- TabControlAutomationPeer.cs
- EntityObject.cs
- RequestSecurityToken.cs
- Instrumentation.cs
- TranslateTransform.cs
- DataRow.cs
- DataSourceView.cs
- UIElement3D.cs
- PositiveTimeSpanValidatorAttribute.cs
- PointLightBase.cs
- TagPrefixAttribute.cs
- RNGCryptoServiceProvider.cs
- CapabilitiesUse.cs
- EntityClientCacheEntry.cs
- XmlSerializerAssemblyAttribute.cs
- UserControlBuildProvider.cs
- ContainerVisual.cs
- TreeNodeBindingCollection.cs
- RegionIterator.cs
- TTSVoice.cs
- SchemaEntity.cs
- MultipleCopiesCollection.cs
- XmlAtomicValue.cs
- SQLGuidStorage.cs
- Opcode.cs
- ContainsRowNumberChecker.cs
- SoapMessage.cs
- GreaterThanOrEqual.cs
- DuplicateWaitObjectException.cs
- WebPartUtil.cs
- HMACSHA256.cs
- filewebresponse.cs
- PanelDesigner.cs
- Authorization.cs
- SchemaTableColumn.cs
- DrawingBrush.cs
- UseLicense.cs
- PackageRelationshipSelector.cs
- Span.cs
- SQLInt16Storage.cs
- GraphicsPath.cs
- FileReader.cs
- OleDbInfoMessageEvent.cs
- AssemblyInfo.cs
- DataTablePropertyDescriptor.cs
- CacheChildrenQuery.cs
- _SpnDictionary.cs
- MetadataArtifactLoaderResource.cs
- DefaultWorkflowLoaderService.cs