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
- GridViewItemAutomationPeer.cs
- XmlQueryCardinality.cs
- BrowsableAttribute.cs
- WorkflowElementDialog.cs
- PhonemeEventArgs.cs
- IntSecurity.cs
- Canonicalizers.cs
- BatchParser.cs
- SqlDataSourceView.cs
- BufferedResponseStream.cs
- FormatConvertedBitmap.cs
- FixUpCollection.cs
- RangeBaseAutomationPeer.cs
- PackageStore.cs
- FileSecurity.cs
- ConfigurationSettings.cs
- ListenerPerfCounters.cs
- TextSpan.cs
- infer.cs
- SQLGuidStorage.cs
- MetadataUtilsSmi.cs
- LinkedResourceCollection.cs
- ZipPackagePart.cs
- SynchronizedDispatch.cs
- AbstractSvcMapFileLoader.cs
- WinCategoryAttribute.cs
- Converter.cs
- JsonReaderWriterFactory.cs
- SimpleHandlerBuildProvider.cs
- DockPattern.cs
- DBSqlParserTableCollection.cs
- DataKey.cs
- HScrollBar.cs
- _TimerThread.cs
- TemplateColumn.cs
- XmlNodeReader.cs
- ConnectionStringSettings.cs
- InfoCardAsymmetricCrypto.cs
- XmlParserContext.cs
- RightsManagementInformation.cs
- EventHandlersDesigner.cs
- TextSegment.cs
- UpnEndpointIdentity.cs
- TypeTypeConverter.cs
- PrefixHandle.cs
- SqlClientFactory.cs
- ObjectDataSourceWizardForm.cs
- FrameDimension.cs
- WindowProviderWrapper.cs
- RequestCacheValidator.cs
- HtmlElementErrorEventArgs.cs
- OleDbReferenceCollection.cs
- FtpWebResponse.cs
- SqlError.cs
- PasswordRecoveryDesigner.cs
- ResourcePermissionBaseEntry.cs
- FileDetails.cs
- WebSysDescriptionAttribute.cs
- CheckedPointers.cs
- GetPageNumberCompletedEventArgs.cs
- CaseCqlBlock.cs
- ConnectionPoolManager.cs
- NumericUpDownAcceleration.cs
- CachedBitmap.cs
- RectAnimationClockResource.cs
- SortFieldComparer.cs
- CommandField.cs
- PropertyItem.cs
- TransactionFlowOption.cs
- PagedDataSource.cs
- TextServicesContext.cs
- IssuedTokenClientCredential.cs
- DesignerDataStoredProcedure.cs
- HMAC.cs
- Base64Encoder.cs
- UserPreferenceChangingEventArgs.cs
- OrderingQueryOperator.cs
- ACE.cs
- SynchronizationFilter.cs
- Stylesheet.cs
- UIElementParaClient.cs
- CompositeDataBoundControl.cs
- UnionCqlBlock.cs
- CustomErrorCollection.cs
- WebBrowserHelper.cs
- SrgsElementFactoryCompiler.cs
- AdapterSwitches.cs
- DependencyPropertyKey.cs
- RulePatternOps.cs
- PrintDialogException.cs
- TextPenaltyModule.cs
- QilNode.cs
- DesignerLinkAdapter.cs
- ConnectorSelectionGlyph.cs
- PointAnimationClockResource.cs
- ConstraintConverter.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- ColumnHeader.cs
- InternalControlCollection.cs
- AssemblyCacheEntry.cs