Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- MemberHolder.cs
- XpsFixedDocumentReaderWriter.cs
- TrailingSpaceComparer.cs
- GeneralTransform3DCollection.cs
- DiscoveryInnerClientManaged11.cs
- DocumentViewerAutomationPeer.cs
- HMAC.cs
- Attributes.cs
- CodeDOMUtility.cs
- NullableConverter.cs
- RoleGroupCollection.cs
- EventArgs.cs
- FixedPageStructure.cs
- EncoderParameter.cs
- InputBindingCollection.cs
- WebPartEventArgs.cs
- Certificate.cs
- QilXmlReader.cs
- TreeViewImageGenerator.cs
- ObjectAnimationUsingKeyFrames.cs
- ObjectItemNoOpAssemblyLoader.cs
- RenderingEventArgs.cs
- KeyConverter.cs
- HtmlAnchor.cs
- Window.cs
- Html32TextWriter.cs
- AQNBuilder.cs
- HostingEnvironment.cs
- XmlQueryCardinality.cs
- CodeBinaryOperatorExpression.cs
- Int64Animation.cs
- SqlDataSourceQueryEditorForm.cs
- WebPartCatalogCloseVerb.cs
- SecurityElement.cs
- CodeCommentStatementCollection.cs
- AuthorizationContext.cs
- InboundActivityHelper.cs
- ProtocolElement.cs
- KoreanLunisolarCalendar.cs
- HelloOperationCD1AsyncResult.cs
- DataTableClearEvent.cs
- basecomparevalidator.cs
- EmptyReadOnlyDictionaryInternal.cs
- SocketElement.cs
- IRCollection.cs
- HuffmanTree.cs
- StoreItemCollection.Loader.cs
- RootBuilder.cs
- ColorConvertedBitmapExtension.cs
- SecurityRuntime.cs
- DefaultEvaluationContext.cs
- OleDbCommand.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- ReadingWritingEntityEventArgs.cs
- EraserBehavior.cs
- XmlSchemaImport.cs
- TreeNodeMouseHoverEvent.cs
- XmlSchemaComplexContentRestriction.cs
- DataGridBoolColumn.cs
- SHA512Managed.cs
- DataGridViewTextBoxCell.cs
- PartialList.cs
- StateItem.cs
- ContainerControl.cs
- TeredoHelper.cs
- ToolBarPanel.cs
- Object.cs
- BindingOperations.cs
- Crypto.cs
- ListViewHitTestInfo.cs
- SqlInfoMessageEvent.cs
- ProtocolsConfigurationEntry.cs
- MonthCalendarDesigner.cs
- UnwrappedTypesXmlSerializerManager.cs
- AsyncCodeActivity.cs
- VirtualPathUtility.cs
- DataControlButton.cs
- TranslateTransform3D.cs
- OutKeywords.cs
- SqlFacetAttribute.cs
- ConnectivityStatus.cs
- XmlCharCheckingWriter.cs
- FontSizeConverter.cs
- XsltException.cs
- UInt16.cs
- IOException.cs
- ObjectAnimationBase.cs
- TextSimpleMarkerProperties.cs
- InstanceNotFoundException.cs
- KnownBoxes.cs
- CommandEventArgs.cs
- QilReference.cs
- Activator.cs
- GrammarBuilderDictation.cs
- TypeEnumerableViewSchema.cs
- ResponseBodyWriter.cs
- GridItemPattern.cs
- ReadWriteObjectLock.cs
- StandardCommandToolStripMenuItem.cs
- DataPager.cs