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
- TableColumnCollectionInternal.cs
- Floater.cs
- Size.cs
- CollaborationHelperFunctions.cs
- TextSerializer.cs
- NGCPageContentSerializerAsync.cs
- XPathAncestorIterator.cs
- oledbconnectionstring.cs
- TextSimpleMarkerProperties.cs
- Marshal.cs
- HttpDebugHandler.cs
- EditingCommands.cs
- MultiAsyncResult.cs
- MenuBindingsEditor.cs
- GlobalizationAssembly.cs
- ToolStripItem.cs
- SerializerDescriptor.cs
- ToolStripSeparatorRenderEventArgs.cs
- XomlCompiler.cs
- ScrollEvent.cs
- SystemIPGlobalStatistics.cs
- EntityDataSourceDesigner.cs
- NumberFunctions.cs
- SchemaMerger.cs
- RuntimeEnvironment.cs
- ViewRendering.cs
- WebPartExportVerb.cs
- TrackingServices.cs
- XPathQilFactory.cs
- KeyInterop.cs
- ObjectDesignerDataSourceView.cs
- SiteMembershipCondition.cs
- DataBindingsDialog.cs
- DocumentScope.cs
- StorageScalarPropertyMapping.cs
- Matrix3D.cs
- AutoGeneratedField.cs
- XPathMessageFilterElementCollection.cs
- SigningCredentials.cs
- StyleHelper.cs
- TemplateParser.cs
- AdornerPresentationContext.cs
- Translator.cs
- ReflectionServiceProvider.cs
- DoubleLinkList.cs
- Stroke2.cs
- WebPartZoneAutoFormat.cs
- Underline.cs
- PointCollectionConverter.cs
- SafeReversePInvokeHandle.cs
- _ListenerAsyncResult.cs
- JoinQueryOperator.cs
- HttpVersion.cs
- ReflectPropertyDescriptor.cs
- SqlDependencyUtils.cs
- BinaryMessageFormatter.cs
- RemotingException.cs
- WebSysDescriptionAttribute.cs
- ActiveXSite.cs
- NavigationPropertyEmitter.cs
- X509IssuerSerialKeyIdentifierClause.cs
- InstancePersistence.cs
- Emitter.cs
- UInt32Storage.cs
- TrustManagerPromptUI.cs
- EventArgs.cs
- SchemaTableOptionalColumn.cs
- ProgressChangedEventArgs.cs
- EdmEntityTypeAttribute.cs
- ServiceCredentialsSecurityTokenManager.cs
- TargetInvocationException.cs
- CursorInteropHelper.cs
- WindowsGraphicsWrapper.cs
- CheckedListBox.cs
- XPathParser.cs
- SurrogateEncoder.cs
- Scripts.cs
- CodeNamespace.cs
- SiteMapNodeCollection.cs
- TdsRecordBufferSetter.cs
- CatalogZoneBase.cs
- DataSourceDescriptorCollection.cs
- PerfCounterSection.cs
- FixedStringLookup.cs
- Dump.cs
- TraceSection.cs
- HttpRuntime.cs
- NavigationService.cs
- ByteStack.cs
- SerializationSectionGroup.cs
- CellParaClient.cs
- QuaternionIndependentAnimationStorage.cs
- TableRowCollection.cs
- Timeline.cs
- ResourceDescriptionAttribute.cs
- InkSerializer.cs
- Native.cs
- ObjectConverter.cs
- ProfessionalColorTable.cs
- LocatorGroup.cs