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
- SemanticTag.cs
- DatatypeImplementation.cs
- Hyperlink.cs
- CompilerError.cs
- Material.cs
- ConfigurationPropertyCollection.cs
- WebHttpBehavior.cs
- TdsParserSafeHandles.cs
- Int32CollectionValueSerializer.cs
- FixedTextPointer.cs
- LinqDataSourceDeleteEventArgs.cs
- Crypto.cs
- Profiler.cs
- DefaultObjectMappingItemCollection.cs
- DateTime.cs
- AxHost.cs
- SafeRightsManagementHandle.cs
- RestHandler.cs
- DateTimeFormatInfo.cs
- MetadataItemEmitter.cs
- OleDbEnumerator.cs
- ConsoleKeyInfo.cs
- WebSysDescriptionAttribute.cs
- ArcSegment.cs
- ADConnectionHelper.cs
- DiscoveryClientChannelBase.cs
- ContentFileHelper.cs
- MasterPageBuildProvider.cs
- HandledMouseEvent.cs
- OdbcParameterCollection.cs
- XmlValueConverter.cs
- BuilderPropertyEntry.cs
- CompositeCollectionView.cs
- DetailsViewCommandEventArgs.cs
- FixedHighlight.cs
- DataIdProcessor.cs
- DataServiceRequestOfT.cs
- AsymmetricKeyExchangeDeformatter.cs
- FontStyleConverter.cs
- SiteOfOriginContainer.cs
- AxWrapperGen.cs
- SchemaSetCompiler.cs
- EmptyEnumerable.cs
- FileDialog_Vista.cs
- ListenDesigner.cs
- CompositionAdorner.cs
- SqlErrorCollection.cs
- KeyInterop.cs
- EncodingStreamWrapper.cs
- DisplayNameAttribute.cs
- Rule.cs
- EventlogProvider.cs
- Int32Converter.cs
- TargetException.cs
- XmlWriterTraceListener.cs
- MD5CryptoServiceProvider.cs
- MessageEncoder.cs
- ConfigurationElementProperty.cs
- HttpGetServerProtocol.cs
- OdbcDataReader.cs
- BitArray.cs
- DynamicAttribute.cs
- DateTime.cs
- Image.cs
- DataRowComparer.cs
- IDReferencePropertyAttribute.cs
- TagMapInfo.cs
- ExtractorMetadata.cs
- ObjectDesignerDataSourceView.cs
- EncryptedType.cs
- FigureParaClient.cs
- dbdatarecord.cs
- WindowsSolidBrush.cs
- TextServicesPropertyRanges.cs
- TextBoxAutoCompleteSourceConverter.cs
- EdmMember.cs
- ScriptBehaviorDescriptor.cs
- SqlStream.cs
- FastEncoder.cs
- FormViewPageEventArgs.cs
- FilePrompt.cs
- SspiWrapper.cs
- ExpressionWriter.cs
- MouseGesture.cs
- TransformGroup.cs
- Int32Rect.cs
- HyperLinkField.cs
- MouseGestureValueSerializer.cs
- TogglePatternIdentifiers.cs
- HighlightVisual.cs
- ApplicationGesture.cs
- XmlEventCache.cs
- MenuItemCollection.cs
- WindowsFormsLinkLabel.cs
- DataGridViewColumnEventArgs.cs
- LocalValueEnumerator.cs
- SetMemberBinder.cs
- TCPListener.cs
- IItemContainerGenerator.cs
- DateTimeOffset.cs