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
- MultiDataTrigger.cs
- ExternalException.cs
- BitmapEffectInputConnector.cs
- MsmqIntegrationBindingElement.cs
- MD5.cs
- BasePattern.cs
- FaultImportOptions.cs
- CounterCreationData.cs
- WindowsSysHeader.cs
- FrameworkElement.cs
- DictionaryBase.cs
- DataGridPagerStyle.cs
- PolyLineSegment.cs
- HuffModule.cs
- GuidConverter.cs
- TextChange.cs
- CopyCodeAction.cs
- Point3DConverter.cs
- CommandHelpers.cs
- BindableTemplateBuilder.cs
- BigInt.cs
- SamlConstants.cs
- XmlMemberMapping.cs
- COAUTHINFO.cs
- AddInController.cs
- DecoderFallback.cs
- InvokeMethod.cs
- FrameworkRichTextComposition.cs
- TableAutomationPeer.cs
- VectorAnimation.cs
- ConfigurationElementCollection.cs
- ManifestResourceInfo.cs
- SafeNativeMethods.cs
- NavigatingCancelEventArgs.cs
- StringBlob.cs
- UInt64Converter.cs
- CancellationHandlerDesigner.cs
- CompilerCollection.cs
- PenThreadWorker.cs
- RestClientProxyHandler.cs
- FastEncoderWindow.cs
- _ListenerResponseStream.cs
- ProfileProvider.cs
- RemoteHelper.cs
- RepeatInfo.cs
- PersonalizationStateQuery.cs
- ConfigurationValidatorBase.cs
- BamlLocalizationDictionary.cs
- PrintPageEvent.cs
- JpegBitmapDecoder.cs
- MdImport.cs
- TimelineGroup.cs
- BitmapData.cs
- SqlTypeSystemProvider.cs
- PolyQuadraticBezierSegment.cs
- SqlDataSourceCommandEventArgs.cs
- ProcessHostMapPath.cs
- SafeNativeMethods.cs
- OleDbPropertySetGuid.cs
- Part.cs
- EventProxy.cs
- DrawingImage.cs
- WeakReferenceEnumerator.cs
- ProfileEventArgs.cs
- XmlReaderSettings.cs
- Command.cs
- PenContexts.cs
- precedingsibling.cs
- CompositeFontFamily.cs
- Point4D.cs
- WhitespaceRuleLookup.cs
- HtmlTextArea.cs
- TextTreeRootNode.cs
- WebPartVerb.cs
- UiaCoreApi.cs
- SevenBitStream.cs
- BitmapCodecInfo.cs
- UniqueConstraint.cs
- SQLBinaryStorage.cs
- WebPartUserCapability.cs
- StateItem.cs
- MailHeaderInfo.cs
- LocatorPartList.cs
- ComplexPropertyEntry.cs
- ClrPerspective.cs
- XmlCharCheckingWriter.cs
- OrderedDictionaryStateHelper.cs
- HttpRequestTraceRecord.cs
- Properties.cs
- Timeline.cs
- QueryCacheKey.cs
- EmbeddedObject.cs
- TrackingRecord.cs
- SizeAnimationClockResource.cs
- InnerItemCollectionView.cs
- CrossContextChannel.cs
- XpsResource.cs
- BitmapEffectGeneralTransform.cs
- SourceFileBuildProvider.cs
- LineGeometry.cs