Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ColorDialog.cs
- PathNode.cs
- TextOutput.cs
- XmlCharacterData.cs
- Vector3D.cs
- EntitySqlQueryBuilder.cs
- DataGridViewAccessibleObject.cs
- HandlerBase.cs
- ToolStripItemEventArgs.cs
- XmlIncludeAttribute.cs
- UserControl.cs
- sitestring.cs
- GenericPrincipal.cs
- CodeDelegateInvokeExpression.cs
- SupportedAddressingMode.cs
- _CacheStreams.cs
- DropShadowBitmapEffect.cs
- UITypeEditor.cs
- MetadataCacheItem.cs
- BitmapEffectGroup.cs
- Point3DAnimationUsingKeyFrames.cs
- WeakHashtable.cs
- XPathNode.cs
- XmlElement.cs
- CodeSnippetStatement.cs
- InstanceCreationEditor.cs
- WebPartDisplayModeCollection.cs
- PlaceHolder.cs
- FastPropertyAccessor.cs
- ScaleTransform3D.cs
- DataBinding.cs
- CompositeDuplexBindingElementImporter.cs
- AppDomainShutdownMonitor.cs
- UserControlCodeDomTreeGenerator.cs
- RadialGradientBrush.cs
- MediaSystem.cs
- ProviderBase.cs
- Int32RectValueSerializer.cs
- AdapterUtil.cs
- DataGridViewCellStyleChangedEventArgs.cs
- VBCodeProvider.cs
- StorageEntityContainerMapping.cs
- XamlPathDataSerializer.cs
- GroupBox.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- ExternalFile.cs
- FieldBuilder.cs
- Run.cs
- HostVisual.cs
- ImageButton.cs
- PartialCachingAttribute.cs
- EditCommandColumn.cs
- OutputCacheModule.cs
- ListSourceHelper.cs
- SkipQueryOptionExpression.cs
- xsdvalidator.cs
- DecimalConstantAttribute.cs
- ReadOnlyCollectionBase.cs
- WSSecurityTokenSerializer.cs
- MenuAdapter.cs
- BatchServiceHost.cs
- RegistryPermission.cs
- Line.cs
- DisableDpiAwarenessAttribute.cs
- SelectionProviderWrapper.cs
- NegotiateStream.cs
- FocusWithinProperty.cs
- MenuBindingsEditor.cs
- OleDbMetaDataFactory.cs
- MatrixTransform3D.cs
- StackOverflowException.cs
- mongolianshape.cs
- COSERVERINFO.cs
- TextParaLineResult.cs
- xsdvalidator.cs
- InteropAutomationProvider.cs
- DiscardableAttribute.cs
- InvalidProgramException.cs
- FragmentQueryProcessor.cs
- DataGridViewCellParsingEventArgs.cs
- SqlDataSourceCommandEventArgs.cs
- DataStreamFromComStream.cs
- SchemaNames.cs
- TraceShell.cs
- COSERVERINFO.cs
- MetadataItem.cs
- ReadOnlyPropertyMetadata.cs
- Button.cs
- EntityStoreSchemaGenerator.cs
- ErrorCodes.cs
- PresentationSource.cs
- XpsViewerException.cs
- CommandValueSerializer.cs
- CodeMemberEvent.cs
- HyperLinkStyle.cs
- DocumentSequenceHighlightLayer.cs
- WmpBitmapDecoder.cs
- MenuBase.cs
- ADConnectionHelper.cs
- SetIndexBinder.cs