Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Data / System / Data / SqlClient / SqlReferenceCollection.cs / 1 / SqlReferenceCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System; using System.Data; using System.Data.Common; using System.Diagnostics; using System.Data.ProviderBase; namespace System.Data.SqlClient { sealed internal class SqlReferenceCollection : DbReferenceCollection { internal const int DataReaderTag = 1; private int _dataReaderCount; internal bool MayHaveDataReader { get { return (0 != _dataReaderCount); } } override public void Add(object value, int tag) { Debug.Assert(DataReaderTag == tag, "unexpected tag?"); Debug.Assert(value is SqlDataReader, "tag doesn't match object type: SqlDataReader"); _dataReaderCount++; base.AddItem(value, tag); } internal void Deactivate() { if (MayHaveDataReader) { base.Notify(0); _dataReaderCount = 0; } Purge(); } internal SqlDataReader FindLiveReader(SqlCommand command) { // if null == command, will find first live datareader // else will find live datareader assocated with the command if (MayHaveDataReader) { foreach (SqlDataReader dataReader in Filter(DataReaderTag)) { if ((null != dataReader) && !dataReader.IsClosed && ((null == command) || (command == dataReader.Command))) { return dataReader; } } } return null; } override protected bool NotifyItem(int message, int tag, object value) { Debug.Assert(0 == message, "unexpected message?"); Debug.Assert(DataReaderTag == tag, "unexpected tag?"); SqlDataReader rdr = (SqlDataReader)value; if (!rdr.IsClosed) { rdr.CloseReaderFromConnection (); } return false; // remove it from the collection } override public void Remove(object value) { Debug.Assert(value is SqlDataReader, "SqlReferenceCollection.Remove expected a SqlDataReader"); _dataReaderCount--; base.RemoveItem(value); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System; using System.Data; using System.Data.Common; using System.Diagnostics; using System.Data.ProviderBase; namespace System.Data.SqlClient { sealed internal class SqlReferenceCollection : DbReferenceCollection { internal const int DataReaderTag = 1; private int _dataReaderCount; internal bool MayHaveDataReader { get { return (0 != _dataReaderCount); } } override public void Add(object value, int tag) { Debug.Assert(DataReaderTag == tag, "unexpected tag?"); Debug.Assert(value is SqlDataReader, "tag doesn't match object type: SqlDataReader"); _dataReaderCount++; base.AddItem(value, tag); } internal void Deactivate() { if (MayHaveDataReader) { base.Notify(0); _dataReaderCount = 0; } Purge(); } internal SqlDataReader FindLiveReader(SqlCommand command) { // if null == command, will find first live datareader // else will find live datareader assocated with the command if (MayHaveDataReader) { foreach (SqlDataReader dataReader in Filter(DataReaderTag)) { if ((null != dataReader) && !dataReader.IsClosed && ((null == command) || (command == dataReader.Command))) { return dataReader; } } } return null; } override protected bool NotifyItem(int message, int tag, object value) { Debug.Assert(0 == message, "unexpected message?"); Debug.Assert(DataReaderTag == tag, "unexpected tag?"); SqlDataReader rdr = (SqlDataReader)value; if (!rdr.IsClosed) { rdr.CloseReaderFromConnection (); } return false; // remove it from the collection } override public void Remove(object value) { Debug.Assert(value is SqlDataReader, "SqlReferenceCollection.Remove expected a SqlDataReader"); _dataReaderCount--; base.RemoveItem(value); } } } // 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
- BuildResultCache.cs
- OracleRowUpdatingEventArgs.cs
- ExeContext.cs
- SerializerDescriptor.cs
- ValidationError.cs
- Vector3DCollectionValueSerializer.cs
- GroupBoxAutomationPeer.cs
- AdapterDictionary.cs
- EntityStoreSchemaGenerator.cs
- ContextMenuService.cs
- VirtualDirectoryMapping.cs
- PageRequestManager.cs
- LoginCancelEventArgs.cs
- XmlEncodedRawTextWriter.cs
- Expression.cs
- Point3DCollectionConverter.cs
- AccessDataSourceView.cs
- MachineKeySection.cs
- UnrecognizedPolicyAssertionElement.cs
- InputManager.cs
- WeakReferenceEnumerator.cs
- DiffuseMaterial.cs
- SqlDataSource.cs
- MemberRelationshipService.cs
- Set.cs
- XmlSchemaNotation.cs
- ContainerFilterService.cs
- RMPermissions.cs
- UriTemplatePathSegment.cs
- HttpChannelHelpers.cs
- SoapSchemaMember.cs
- DataGridViewRowsAddedEventArgs.cs
- SrgsSubset.cs
- StorageBasedPackageProperties.cs
- BitmapDownload.cs
- storepermission.cs
- HttpRequest.cs
- ProviderMetadata.cs
- SiteMapProvider.cs
- Window.cs
- BindingContext.cs
- DataObject.cs
- figurelengthconverter.cs
- TrackingStringDictionary.cs
- TraceContextEventArgs.cs
- Thickness.cs
- Span.cs
- InplaceBitmapMetadataWriter.cs
- SHA1Cng.cs
- Column.cs
- HttpWriter.cs
- Span.cs
- ScrollItemPatternIdentifiers.cs
- ParameterBuilder.cs
- HtmlElementErrorEventArgs.cs
- CodeDirectiveCollection.cs
- uribuilder.cs
- RichTextBoxAutomationPeer.cs
- BindingNavigatorDesigner.cs
- BrushConverter.cs
- WebProxyScriptElement.cs
- AvtEvent.cs
- EmptyQuery.cs
- OleDbFactory.cs
- AsymmetricAlgorithm.cs
- MediaContextNotificationWindow.cs
- ControlUtil.cs
- PolyBezierSegmentFigureLogic.cs
- CacheChildrenQuery.cs
- ResponseStream.cs
- SafeTokenHandle.cs
- ExtendedPropertyDescriptor.cs
- RadialGradientBrush.cs
- EditorPartChrome.cs
- IsolationInterop.cs
- SqlUtil.cs
- SystemIPAddressInformation.cs
- GeneralTransformGroup.cs
- PageParser.cs
- HtmlElementErrorEventArgs.cs
- SiteMapDesignerDataSourceView.cs
- NestedContainer.cs
- ListBoxDesigner.cs
- Substitution.cs
- QueryFunctions.cs
- TypedTableBase.cs
- SymbolTable.cs
- TCEAdapterGenerator.cs
- SignatureToken.cs
- ChildTable.cs
- ZipIOCentralDirectoryFileHeader.cs
- OracleTimeSpan.cs
- BitmapDecoder.cs
- VScrollBar.cs
- Process.cs
- TlsnegoTokenAuthenticator.cs
- SocketAddress.cs
- HeaderLabel.cs
- HttpPostedFile.cs
- ForwardPositionQuery.cs