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
- ScrollBar.cs
- XmlLanguage.cs
- MethodBody.cs
- MappedMetaModel.cs
- LightweightCodeGenerator.cs
- OLEDB_Util.cs
- ToolboxItemAttribute.cs
- ProjectionPlan.cs
- RegexCompiler.cs
- MiniCustomAttributeInfo.cs
- SimpleModelProvider.cs
- ApplicationDirectory.cs
- EditCommandColumn.cs
- PopupControlService.cs
- SequentialOutput.cs
- KernelTypeValidation.cs
- Globals.cs
- TextTreePropertyUndoUnit.cs
- TextServicesDisplayAttribute.cs
- XmlConverter.cs
- ExpandCollapsePattern.cs
- PolicyManager.cs
- EventData.cs
- CustomAssemblyResolver.cs
- InkPresenterAutomationPeer.cs
- MeasurementDCInfo.cs
- SystemIPGlobalStatistics.cs
- AdapterUtil.cs
- QuotedPairReader.cs
- FunctionNode.cs
- EdgeModeValidation.cs
- ObjectCloneHelper.cs
- ResXBuildProvider.cs
- CodeStatement.cs
- AesManaged.cs
- MetadataArtifactLoaderCompositeResource.cs
- InputScope.cs
- DataRecordObjectView.cs
- XmlNotation.cs
- DataSourceSelectArguments.cs
- HMACSHA1.cs
- MarkupWriter.cs
- WindowsListViewGroupSubsetLink.cs
- BuildProvider.cs
- XmlSchemaComplexType.cs
- MarkerProperties.cs
- GetReadStreamResult.cs
- HostVisual.cs
- UnconditionalPolicy.cs
- Animatable.cs
- ListViewGroupItemCollection.cs
- AssociationSetEnd.cs
- ConfigurationManagerHelper.cs
- ErrorHandler.cs
- DataKey.cs
- CryptoApi.cs
- ContractsBCL.cs
- SocketInformation.cs
- WindowsSysHeader.cs
- SamlAudienceRestrictionCondition.cs
- ExtendedProtectionPolicy.cs
- CompilationRelaxations.cs
- TabletDeviceInfo.cs
- BuildManager.cs
- TripleDESCryptoServiceProvider.cs
- DCSafeHandle.cs
- OdbcException.cs
- PeerEndPoint.cs
- TemplateKeyConverter.cs
- SqlServer2KCompatibilityCheck.cs
- AdjustableArrowCap.cs
- SessionEndedEventArgs.cs
- TemplateFactory.cs
- DataContractSet.cs
- IMembershipProvider.cs
- Asn1Utilities.cs
- WindowsStartMenu.cs
- XmlDeclaration.cs
- TextBoxAutomationPeer.cs
- VisemeEventArgs.cs
- AccessibilityHelperForXpWin2k3.cs
- ParseNumbers.cs
- TextElementCollectionHelper.cs
- RC2.cs
- HtmlInputSubmit.cs
- Floater.cs
- FileSystemEventArgs.cs
- ToolStripPanel.cs
- Main.cs
- TcpConnectionPoolSettings.cs
- ExpressionBuilder.cs
- TransactionProtocolConverter.cs
- TextFormatterContext.cs
- HwndProxyElementProvider.cs
- ExtensionWindow.cs
- CorrelationManager.cs
- NetTcpBinding.cs
- DynamicMethod.cs
- TextBox.cs
- ServiceHostFactory.cs