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
- QueryGeneratorBase.cs
- ModuleConfigurationInfo.cs
- PageClientProxyGenerator.cs
- StringDictionaryCodeDomSerializer.cs
- NotSupportedException.cs
- PointUtil.cs
- WebControlsSection.cs
- SqlDataSourceQueryEditorForm.cs
- MetadataImporterQuotas.cs
- HScrollBar.cs
- ApplicationHost.cs
- UnsafeNativeMethods.cs
- SchemaReference.cs
- DesignTimeHTMLTextWriter.cs
- OutOfProcStateClientManager.cs
- SQLDecimal.cs
- XmlSerializerFactory.cs
- ThreadPool.cs
- SystemWebExtensionsSectionGroup.cs
- WindowsProgressbar.cs
- AtlasWeb.Designer.cs
- SynchronizationScope.cs
- PropertyGridCommands.cs
- PageClientProxyGenerator.cs
- DesignerLoader.cs
- ConfigXmlDocument.cs
- PreloadedPackages.cs
- DelegateSerializationHolder.cs
- HttpContextServiceHost.cs
- CaseInsensitiveHashCodeProvider.cs
- StaticTextPointer.cs
- WebPartDisplayMode.cs
- HttpInputStream.cs
- SoapHttpTransportImporter.cs
- HeaderUtility.cs
- TypeDescriptionProvider.cs
- OdbcEnvironment.cs
- ProxyGenerator.cs
- Canvas.cs
- FixedSOMElement.cs
- ListViewHitTestInfo.cs
- QuadraticBezierSegment.cs
- EventLogPermissionEntry.cs
- ProcessInputEventArgs.cs
- ConfigDefinitionUpdates.cs
- XmlDataProvider.cs
- Number.cs
- HttpWrapper.cs
- EventRoute.cs
- SoapReflectionImporter.cs
- IProvider.cs
- CollectionBase.cs
- CodeParameterDeclarationExpressionCollection.cs
- TreeNode.cs
- CrossContextChannel.cs
- ExtensionQuery.cs
- CodeArrayIndexerExpression.cs
- ExpressionVisitor.cs
- FileIOPermission.cs
- ScrollBar.cs
- ResolveMatches11.cs
- EntityTypeEmitter.cs
- SizeAnimation.cs
- ReferentialConstraint.cs
- FontWeights.cs
- UInt16Converter.cs
- WebHeaderCollection.cs
- HttpStreamXmlDictionaryReader.cs
- SendSecurityHeaderElement.cs
- Visual3DCollection.cs
- contentDescriptor.cs
- CommonGetThemePartSize.cs
- InstanceKeyCompleteException.cs
- WorkflowFileItem.cs
- XmlDataLoader.cs
- UnsafeNativeMethods.cs
- StringDictionaryWithComparer.cs
- ToolStripDropDownMenu.cs
- ArgumentException.cs
- StylusPointDescription.cs
- RSAPKCS1KeyExchangeFormatter.cs
- StreamingContext.cs
- HitTestWithGeometryDrawingContextWalker.cs
- Fonts.cs
- DataGridSortCommandEventArgs.cs
- BaseDataBoundControl.cs
- TdsEnums.cs
- MsmqDecodeHelper.cs
- MDIClient.cs
- Events.cs
- CollectionViewGroupInternal.cs
- OptionalMessageQuery.cs
- GradientStop.cs
- DataBoundControlHelper.cs
- TimeSpanStorage.cs
- SqlCachedBuffer.cs
- BuildProviderCollection.cs
- InternalRelationshipCollection.cs
- DetailsView.cs
- StyleBamlRecordReader.cs