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
- WebPartMenuStyle.cs
- MultipleViewPattern.cs
- PrincipalPermission.cs
- LinkedResourceCollection.cs
- RedirectionProxy.cs
- Span.cs
- Privilege.cs
- OutputCacheSettingsSection.cs
- CultureInfoConverter.cs
- ServiceModelDictionary.cs
- nulltextcontainer.cs
- InkCanvas.cs
- PageThemeParser.cs
- XmlLanguageConverter.cs
- PropertyValueChangedEvent.cs
- SymLanguageType.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- ConnectionPoolManager.cs
- HttpFileCollection.cs
- Model3D.cs
- RootProfilePropertySettingsCollection.cs
- EpmContentSerializer.cs
- Model3DGroup.cs
- TreeNodeBindingCollection.cs
- XPathPatternBuilder.cs
- AutoGeneratedField.cs
- StandardCommands.cs
- ScrollContentPresenter.cs
- GridViewSelectEventArgs.cs
- LocalValueEnumerator.cs
- ThreadLocal.cs
- DictionaryKeyPropertyAttribute.cs
- ResizeGrip.cs
- BackgroundWorker.cs
- XmlSchemaInfo.cs
- HttpInputStream.cs
- ConfigXmlComment.cs
- SingleAnimation.cs
- FunctionQuery.cs
- EntityContainerEmitter.cs
- DeviceContext2.cs
- _Connection.cs
- oledbmetadatacolumnnames.cs
- storepermission.cs
- ShapingWorkspace.cs
- CodeAttributeDeclaration.cs
- XamlSerializerUtil.cs
- SqlDataSourceCommandEventArgs.cs
- InlineUIContainer.cs
- Parameter.cs
- Transform.cs
- ListItemCollection.cs
- Visual3DCollection.cs
- DataSourceCache.cs
- TemplateBindingExtensionConverter.cs
- DrawTreeNodeEventArgs.cs
- MexBindingBindingCollectionElement.cs
- ImageFormat.cs
- KeySpline.cs
- XmlSchemaNotation.cs
- SqlMethods.cs
- RestHandlerFactory.cs
- FormsAuthentication.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- _KerberosClient.cs
- ProcessInputEventArgs.cs
- ProcessStartInfo.cs
- PasswordRecoveryAutoFormat.cs
- ThreadStartException.cs
- CodeDirectoryCompiler.cs
- TemplateBindingExpressionConverter.cs
- autovalidator.cs
- XamlTemplateSerializer.cs
- SchemaImporterExtensionsSection.cs
- CodeCompileUnit.cs
- SiteMapNode.cs
- IHttpResponseInternal.cs
- TraceLog.cs
- Size.cs
- BaseValidator.cs
- XhtmlTextWriter.cs
- LambdaCompiler.Unary.cs
- ApplicationTrust.cs
- DataDocumentXPathNavigator.cs
- HTTPNotFoundHandler.cs
- SafeFileMapViewHandle.cs
- CredentialCache.cs
- BitStream.cs
- XamlTypeMapperSchemaContext.cs
- SqlDataAdapter.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- TabControlEvent.cs
- BaseParaClient.cs
- UriTemplateTrieLocation.cs
- OleStrCAMarshaler.cs
- _BufferOffsetSize.cs
- NonBatchDirectoryCompiler.cs
- InvalidPropValue.cs
- RightNameExpirationInfoPair.cs
- CatalogZone.cs