Code:
/ FX-1434 / FX-1434 / 1.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
- AutomationPropertyInfo.cs
- OdbcCommandBuilder.cs
- DataTableTypeConverter.cs
- TextEditorLists.cs
- SqlDataRecord.cs
- NativeMethods.cs
- XmlElementAttributes.cs
- Matrix3DValueSerializer.cs
- TableRowGroupCollection.cs
- ImmutableObjectAttribute.cs
- DataViewListener.cs
- OLEDB_Util.cs
- SqlGenericUtil.cs
- DeferrableContent.cs
- SamlSecurityTokenAuthenticator.cs
- HttpBrowserCapabilitiesBase.cs
- InspectionWorker.cs
- ComplusTypeValidator.cs
- ScaleTransform.cs
- Maps.cs
- DockEditor.cs
- FormViewPagerRow.cs
- MatrixUtil.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- XmlDataSource.cs
- Encoding.cs
- NavigatorOutput.cs
- SystemResources.cs
- OleServicesContext.cs
- EUCJPEncoding.cs
- QueryExtender.cs
- EncoderBestFitFallback.cs
- SqlProcedureAttribute.cs
- XmlIncludeAttribute.cs
- HttpAsyncResult.cs
- Typeface.cs
- CodeParameterDeclarationExpression.cs
- BitmapEncoder.cs
- CodeDOMProvider.cs
- HostedBindingBehavior.cs
- WindowsEditBoxRange.cs
- GroupBoxAutomationPeer.cs
- Localizer.cs
- GeometryValueSerializer.cs
- Stopwatch.cs
- HtmlCommandAdapter.cs
- DateTimeStorage.cs
- SafeProcessHandle.cs
- MdiWindowListStrip.cs
- TextTreeText.cs
- TraceHandlerErrorFormatter.cs
- Section.cs
- MemberHolder.cs
- Message.cs
- sortedlist.cs
- IdnMapping.cs
- Metadata.cs
- TabControlAutomationPeer.cs
- Image.cs
- Hashtable.cs
- ConfigurationCollectionAttribute.cs
- DiscoveryRequestHandler.cs
- StackBuilderSink.cs
- EffectiveValueEntry.cs
- DbParameterHelper.cs
- ImageMap.cs
- PrtTicket_Public_Simple.cs
- BaseTemplatedMobileComponentEditor.cs
- ImportOptions.cs
- HttpModuleActionCollection.cs
- SelectionHighlightInfo.cs
- SQLDoubleStorage.cs
- XPathBinder.cs
- DWriteFactory.cs
- ListBox.cs
- ListControlBoundActionList.cs
- _LazyAsyncResult.cs
- MsmqIntegrationInputMessage.cs
- VariantWrapper.cs
- UnmanagedBitmapWrapper.cs
- DtdParser.cs
- BaseAppDomainProtocolHandler.cs
- BaseTransportHeaders.cs
- WebContext.cs
- CallbackException.cs
- OpenTypeLayoutCache.cs
- GroupByExpressionRewriter.cs
- InheritanceRules.cs
- TableLayoutColumnStyleCollection.cs
- CaseInsensitiveOrdinalStringComparer.cs
- PasswordDeriveBytes.cs
- AggregatePushdown.cs
- TemplateContainer.cs
- IntranetCredentialPolicy.cs
- IntPtr.cs
- MemberListBinding.cs
- ButtonBase.cs
- PeerNameRegistration.cs
- ScrollViewerAutomationPeer.cs
- MD5.cs