Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PreviewKeyDownEventArgs.cs
- unsafenativemethodstextservices.cs
- ToolStripPanelCell.cs
- CellPartitioner.cs
- FixedSOMLineRanges.cs
- SqlErrorCollection.cs
- InternalsVisibleToAttribute.cs
- EdgeProfileValidation.cs
- FileVersionInfo.cs
- FixedSOMLineRanges.cs
- ButtonColumn.cs
- SessionParameter.cs
- VectorCollectionConverter.cs
- TrackingMemoryStream.cs
- Compiler.cs
- XmlStreamStore.cs
- WebPartTransformerAttribute.cs
- ToolStripOverflow.cs
- AttachedPropertyBrowsableAttribute.cs
- HandlerWithFactory.cs
- NavigationHelper.cs
- columnmapfactory.cs
- EntityCommandDefinition.cs
- GlobalizationSection.cs
- EmptyControlCollection.cs
- SqlInternalConnectionSmi.cs
- NamespaceInfo.cs
- XPathParser.cs
- ManagementException.cs
- DispatcherExceptionEventArgs.cs
- WebMessageEncoderFactory.cs
- MDIClient.cs
- SamlSubjectStatement.cs
- FirstMatchCodeGroup.cs
- Object.cs
- ObjectDataSourceMethodEventArgs.cs
- TextViewElement.cs
- FamilyMapCollection.cs
- DiagnosticEventProvider.cs
- RangeValidator.cs
- FrameworkContentElement.cs
- ObjectDataSourceEventArgs.cs
- EntityDesignerDataSourceView.cs
- DynamicQueryStringParameter.cs
- MetadataArtifactLoaderCompositeResource.cs
- Viewport3DVisual.cs
- PackageDigitalSignature.cs
- ChannelListenerBase.cs
- Deflater.cs
- DesignerDataParameter.cs
- path.cs
- DesignerView.Commands.cs
- QuadraticBezierSegment.cs
- FontSizeConverter.cs
- X509CertificateValidator.cs
- ContextMenuStrip.cs
- FormViewDeleteEventArgs.cs
- CatalogPartChrome.cs
- Resources.Designer.cs
- DoubleAverageAggregationOperator.cs
- DataGridViewTopRowAccessibleObject.cs
- TemplatedEditableDesignerRegion.cs
- TextSchema.cs
- ConfigurationSectionCollection.cs
- ClockController.cs
- SecurityUniqueId.cs
- TemplateControl.cs
- DataSourceComponent.cs
- CodeGenerator.cs
- ContentWrapperAttribute.cs
- TableLayoutSettingsTypeConverter.cs
- ExtendedPropertyCollection.cs
- RecordsAffectedEventArgs.cs
- SqlUserDefinedAggregateAttribute.cs
- CancellationTokenRegistration.cs
- SqlNotificationRequest.cs
- TransactionInterop.cs
- NativeMethods.cs
- SchemaNamespaceManager.cs
- XsltContext.cs
- AsymmetricSignatureFormatter.cs
- LinkClickEvent.cs
- PeerToPeerException.cs
- PerformanceCounterLib.cs
- TreeNodeCollectionEditorDialog.cs
- BuildDependencySet.cs
- String.cs
- PageThemeBuildProvider.cs
- ListenerHandler.cs
- RegexMatch.cs
- TrackingMemoryStreamFactory.cs
- SqlResolver.cs
- DiagnosticsConfiguration.cs
- TemplateManager.cs
- UpdateExpressionVisitor.cs
- OleDbException.cs
- HwndSourceParameters.cs
- __ConsoleStream.cs
- WebEventCodes.cs
- TypedRowHandler.cs