Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeDomConfigurationHandler.cs
- XmlArrayAttribute.cs
- ItemType.cs
- EventlogProvider.cs
- MsmqIntegrationProcessProtocolHandler.cs
- Int16Storage.cs
- CssStyleCollection.cs
- ColumnResult.cs
- BufferedStream.cs
- MetadataWorkspace.cs
- FormViewPageEventArgs.cs
- WorkflowServiceBuildProvider.cs
- HashRepartitionStream.cs
- HtmlInputCheckBox.cs
- WebPartEditorCancelVerb.cs
- ButtonRenderer.cs
- ComponentDispatcher.cs
- LambdaReference.cs
- OracleFactory.cs
- DiscoveryDocumentLinksPattern.cs
- MatrixKeyFrameCollection.cs
- AnonymousIdentificationSection.cs
- COMException.cs
- SchemaCollectionPreprocessor.cs
- ReferencedCollectionType.cs
- QueryOutputWriter.cs
- SoapServerProtocol.cs
- XmlSchemaInferenceException.cs
- BufferBuilder.cs
- Mouse.cs
- StrokeRenderer.cs
- Animatable.cs
- XmlWriterDelegator.cs
- BinaryCommonClasses.cs
- CodeDomSerializationProvider.cs
- _FtpControlStream.cs
- WebPartEditorApplyVerb.cs
- KeysConverter.cs
- GenericWebPart.cs
- WebServiceHandler.cs
- ScrollEventArgs.cs
- DbDataRecord.cs
- OleDbConnection.cs
- APCustomTypeDescriptor.cs
- Quaternion.cs
- PassportIdentity.cs
- FlowDecisionLabelFeature.cs
- FacetValueContainer.cs
- XmlQueryContext.cs
- TrailingSpaceComparer.cs
- PowerStatus.cs
- ByteBufferPool.cs
- VariableQuery.cs
- FrameworkContextData.cs
- ResourcesGenerator.cs
- Base64Stream.cs
- ActivitiesCollection.cs
- PageThemeParser.cs
- MethodCallExpression.cs
- FixedSOMSemanticBox.cs
- MachineKeyValidationConverter.cs
- EntityDataSourceDesignerHelper.cs
- PriorityQueue.cs
- RoleServiceManager.cs
- EventRouteFactory.cs
- DelegateSerializationHolder.cs
- FactoryGenerator.cs
- RoleService.cs
- ProviderSettings.cs
- EventLogPermissionHolder.cs
- ParallelDesigner.cs
- XmlSchemaValidator.cs
- WebPartUtil.cs
- Duration.cs
- DataListItemCollection.cs
- GuidConverter.cs
- DBDataPermission.cs
- RegexReplacement.cs
- ServiceObjectContainer.cs
- ContentOperations.cs
- MimeTypePropertyAttribute.cs
- SeekableMessageNavigator.cs
- Image.cs
- TdsParserHelperClasses.cs
- CommentAction.cs
- DataServiceEntityAttribute.cs
- RegexMatchCollection.cs
- TextElementEnumerator.cs
- GeneralTransformGroup.cs
- WaitHandle.cs
- UrlPropertyAttribute.cs
- ListDependantCardsRequest.cs
- RepeatBehavior.cs
- HashLookup.cs
- ListViewGroupItemCollection.cs
- LineVisual.cs
- SymbolType.cs
- PasswordDeriveBytes.cs
- WmpBitmapDecoder.cs
- PerformanceCounterCategory.cs