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
- ListBoxItemWrapperAutomationPeer.cs
- followingquery.cs
- VectorCollection.cs
- XmlSchemaAttributeGroupRef.cs
- Facet.cs
- List.cs
- PathSegmentCollection.cs
- ComponentDispatcherThread.cs
- WebProxyScriptElement.cs
- Confirm.cs
- TypeBuilderInstantiation.cs
- HttpModuleCollection.cs
- Path.cs
- DataGridPagerStyle.cs
- WebBrowserDocumentCompletedEventHandler.cs
- WebPageTraceListener.cs
- RowSpanVector.cs
- COAUTHIDENTITY.cs
- UniqueConstraint.cs
- IntegrationExceptionEventArgs.cs
- WindowProviderWrapper.cs
- Grid.cs
- WebUtil.cs
- SoapSchemaImporter.cs
- WebPartsSection.cs
- BinaryOperationBinder.cs
- MsmqElementBase.cs
- AttributeCollection.cs
- SmtpNetworkElement.cs
- GridViewColumnCollectionChangedEventArgs.cs
- BufferedGraphicsManager.cs
- BufferedReadStream.cs
- XmlValueConverter.cs
- CompiledQueryCacheEntry.cs
- Frame.cs
- Match.cs
- InternalConfigSettingsFactory.cs
- WebServiceMethodData.cs
- XmlFormatReaderGenerator.cs
- PopupRootAutomationPeer.cs
- Timer.cs
- CatalogPart.cs
- HttpRuntime.cs
- HwndTarget.cs
- ContextQuery.cs
- MappingMetadataHelper.cs
- VisualState.cs
- DbConnectionClosed.cs
- ServicePoint.cs
- BypassElementCollection.cs
- SerialErrors.cs
- ExpressionPrefixAttribute.cs
- TraceContextRecord.cs
- DelegateArgumentValue.cs
- LinearKeyFrames.cs
- ToolBarTray.cs
- EventLogger.cs
- LineServicesCallbacks.cs
- NetTcpSecurity.cs
- DataListItem.cs
- BlurEffect.cs
- Pool.cs
- ObjectKeyFrameCollection.cs
- DataContractSerializerSection.cs
- OptimisticConcurrencyException.cs
- IMembershipProvider.cs
- ExceptionUtil.cs
- TextViewElement.cs
- ReflectPropertyDescriptor.cs
- WindowsUpDown.cs
- DragCompletedEventArgs.cs
- Lasso.cs
- ProjectedWrapper.cs
- WindowsFormsEditorServiceHelper.cs
- MemoryRecordBuffer.cs
- SmtpReplyReader.cs
- SecurityTokenSerializer.cs
- UnsafeNativeMethodsPenimc.cs
- ConstraintConverter.cs
- DataControlExtensions.cs
- BinaryParser.cs
- ArrayElementGridEntry.cs
- XmlArrayItemAttributes.cs
- StoreAnnotationsMap.cs
- NaturalLanguageHyphenator.cs
- ConfigPathUtility.cs
- VectorAnimation.cs
- ToolStripTextBox.cs
- TraceInternal.cs
- DataGridViewSelectedRowCollection.cs
- CommandBindingCollection.cs
- AnnotationService.cs
- MessageQueuePermissionEntry.cs
- NoPersistHandle.cs
- PhotoPrintingIntent.cs
- DataPagerField.cs
- TimeSpanConverter.cs
- WmlObjectListAdapter.cs
- GeometryDrawing.cs
- SqlRowUpdatingEvent.cs