Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / SqlClient / SqlReferenceCollection.cs / 1305376 / 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
- HandoffBehavior.cs
- InvariantComparer.cs
- VariableAction.cs
- HttpFileCollection.cs
- ByteAnimation.cs
- Logging.cs
- TextContainerChangedEventArgs.cs
- FileDetails.cs
- shaperfactoryquerycachekey.cs
- RijndaelManaged.cs
- translator.cs
- Compilation.cs
- DataSet.cs
- SequentialActivityDesigner.cs
- RIPEMD160.cs
- UnsafeNativeMethods.cs
- GenericQueueSurrogate.cs
- Paragraph.cs
- PopupEventArgs.cs
- Int64Animation.cs
- ContentPresenter.cs
- odbcmetadatacolumnnames.cs
- IdentityNotMappedException.cs
- FormViewInsertEventArgs.cs
- MessageFormatterConverter.cs
- WebPartDeleteVerb.cs
- NameValueFileSectionHandler.cs
- DocumentSchemaValidator.cs
- FilterableAttribute.cs
- SrgsGrammarCompiler.cs
- XPathDocument.cs
- Binding.cs
- StringOutput.cs
- XamlStyleSerializer.cs
- ConfigurationStrings.cs
- XmlCharCheckingReader.cs
- IpcClientManager.cs
- Parameter.cs
- WebPartMenuStyle.cs
- PenThread.cs
- HttpListenerResponse.cs
- SecUtil.cs
- Aggregates.cs
- PlatformNotSupportedException.cs
- AuthenticateEventArgs.cs
- BitmapEffectInputData.cs
- NodeFunctions.cs
- DbProviderFactory.cs
- FieldBuilder.cs
- WasHostedComPlusFactory.cs
- ResourcePermissionBaseEntry.cs
- ObjectSet.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- TripleDES.cs
- Int32AnimationUsingKeyFrames.cs
- PageAction.cs
- ExecutedRoutedEventArgs.cs
- CompatibleComparer.cs
- FileAuthorizationModule.cs
- XmlUtf8RawTextWriter.cs
- ContainerControl.cs
- XmlSignatureProperties.cs
- CryptoApi.cs
- DataObjectMethodAttribute.cs
- DBSqlParserTableCollection.cs
- srgsitem.cs
- ManualResetEvent.cs
- LockRecoveryTask.cs
- UIInitializationException.cs
- IpcChannel.cs
- TextParaLineResult.cs
- SQLGuid.cs
- IApplicationTrustManager.cs
- SystemColors.cs
- RegionInfo.cs
- GridViewRowPresenter.cs
- MessageBox.cs
- RetrieveVirtualItemEventArgs.cs
- SyndicationLink.cs
- Module.cs
- CopyEncoder.cs
- BitmapEditor.cs
- InputBuffer.cs
- HandledMouseEvent.cs
- FixedSOMSemanticBox.cs
- QilInvoke.cs
- DesigntimeLicenseContext.cs
- ListMarkerLine.cs
- SourceChangedEventArgs.cs
- Int32.cs
- SchemaImporterExtensionsSection.cs
- HashHelper.cs
- ContextMenuService.cs
- DateTimeConstantAttribute.cs
- XmlDictionaryReader.cs
- XmlExpressionDumper.cs
- BindingsCollection.cs
- XmlQueryOutput.cs
- TextEncodedRawTextWriter.cs
- PkcsMisc.cs