Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- RegisteredScript.cs
- Path.cs
- PropertyGridEditorPart.cs
- PatternMatcher.cs
- WindowsSysHeader.cs
- RightsManagementEncryptionTransform.cs
- ClientBuildManagerCallback.cs
- VectorAnimationUsingKeyFrames.cs
- SqlFunctionAttribute.cs
- AgileSafeNativeMemoryHandle.cs
- PeerNameRecord.cs
- XPathDocumentNavigator.cs
- DataSourceHelper.cs
- HtmlDocument.cs
- DataSetSchema.cs
- DataRelation.cs
- HGlobalSafeHandle.cs
- DoubleCollectionConverter.cs
- StreamReader.cs
- EmptyStringExpandableObjectConverter.cs
- InkPresenter.cs
- UpdateCompiler.cs
- NetworkInformationPermission.cs
- OnOperation.cs
- HMACSHA384.cs
- TextProperties.cs
- VisualStateGroup.cs
- PrimitiveDataContract.cs
- PresentationAppDomainManager.cs
- OleDbConnectionFactory.cs
- DataViewSetting.cs
- ErrorsHelper.cs
- EndpointAddress.cs
- XmlElementList.cs
- RecognitionEventArgs.cs
- SmtpMail.cs
- RelatedEnd.cs
- StateMachineSubscription.cs
- EntityObject.cs
- SafeNativeMemoryHandle.cs
- IDReferencePropertyAttribute.cs
- WsatTransactionInfo.cs
- Transform3DCollection.cs
- StringValidatorAttribute.cs
- TypeReference.cs
- ColorPalette.cs
- SqlDataSourceSelectingEventArgs.cs
- InvocationExpression.cs
- ExternalCalls.cs
- SignedInfo.cs
- IODescriptionAttribute.cs
- SimpleTextLine.cs
- DelimitedListTraceListener.cs
- ProcessThread.cs
- StorageTypeMapping.cs
- HttpChannelListener.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- AttributeQuery.cs
- LicenseException.cs
- VSWCFServiceContractGenerator.cs
- WebServiceErrorEvent.cs
- XmlAtomErrorReader.cs
- TransformGroup.cs
- DetailsViewCommandEventArgs.cs
- XmlDictionaryWriter.cs
- TabRenderer.cs
- BaseConfigurationRecord.cs
- VScrollProperties.cs
- ByteStack.cs
- RepeatInfo.cs
- ReachFixedDocumentSerializer.cs
- OdbcDataAdapter.cs
- RolePrincipal.cs
- Operator.cs
- SQLInt64.cs
- WebPartDeleteVerb.cs
- Misc.cs
- XmlFormatReaderGenerator.cs
- RequiredFieldValidator.cs
- IDReferencePropertyAttribute.cs
- SemanticResolver.cs
- RemotingAttributes.cs
- URIFormatException.cs
- WorkflowDebuggerSteppingAttribute.cs
- ClientSession.cs
- NodeFunctions.cs
- DrawingContextDrawingContextWalker.cs
- DateRangeEvent.cs
- CodeFieldReferenceExpression.cs
- TextAdaptor.cs
- ObjectStateEntry.cs
- GridSplitterAutomationPeer.cs
- DoubleAnimationUsingPath.cs
- Condition.cs
- TreeWalker.cs
- Interlocked.cs
- XmlComment.cs
- PersianCalendar.cs
- VScrollBar.cs
- PartialTrustVisibleAssembly.cs