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
- XmlLanguage.cs
- WebEventTraceProvider.cs
- DatatypeImplementation.cs
- TextEvent.cs
- DataObjectFieldAttribute.cs
- StorageFunctionMapping.cs
- PropertySourceInfo.cs
- OleDbConnection.cs
- KeyedByTypeCollection.cs
- SchemaMerger.cs
- AttributeData.cs
- LayoutTableCell.cs
- BindingList.cs
- HyperLinkField.cs
- X509Utils.cs
- StringPropertyBuilder.cs
- DataView.cs
- ValidationRuleCollection.cs
- SequentialWorkflowHeaderFooter.cs
- TransferRequestHandler.cs
- RegexCaptureCollection.cs
- WebInvokeAttribute.cs
- DbProviderManifest.cs
- FormattedTextSymbols.cs
- x509store.cs
- FunctionDetailsReader.cs
- MeasureItemEvent.cs
- DoubleCollection.cs
- COM2ExtendedUITypeEditor.cs
- ExpressionBuilder.cs
- SimplePropertyEntry.cs
- AnimationTimeline.cs
- SendMessageContent.cs
- COAUTHIDENTITY.cs
- ToolStripDropDownClosingEventArgs.cs
- TemplatePagerField.cs
- ColorMap.cs
- LastQueryOperator.cs
- VisualBasicValue.cs
- COM2IProvidePropertyBuilderHandler.cs
- FontFamilyIdentifier.cs
- SettingsPropertyCollection.cs
- Line.cs
- FileUpload.cs
- ConsumerConnectionPointCollection.cs
- AsmxEndpointPickerExtension.cs
- _ConnectStream.cs
- Mouse.cs
- HtmlInputHidden.cs
- GridViewRowCollection.cs
- Accessors.cs
- CorrelationManager.cs
- TreePrinter.cs
- ListSortDescriptionCollection.cs
- ClientBuildManagerCallback.cs
- SystemColors.cs
- HttpFileCollection.cs
- HitTestParameters3D.cs
- QueryIntervalOp.cs
- SafeNativeMethods.cs
- GlyphTypeface.cs
- DataGridViewSelectedColumnCollection.cs
- PolygonHotSpot.cs
- SmiEventStream.cs
- DragDropManager.cs
- DrawingDrawingContext.cs
- CheckBoxDesigner.cs
- AspNetHostingPermission.cs
- HttpDictionary.cs
- SessionPageStateSection.cs
- SafeThemeHandle.cs
- SamlAudienceRestrictionCondition.cs
- ZipFileInfo.cs
- QueryTaskGroupState.cs
- XmlDataSourceView.cs
- StreamUpdate.cs
- MsmqTransportElement.cs
- IEnumerable.cs
- ClientReliableChannelBinder.cs
- ToolStripItemCollection.cs
- RankException.cs
- SocketAddress.cs
- TTSEngineTypes.cs
- SafeNativeMethodsOther.cs
- ClientEventManager.cs
- SelectionItemProviderWrapper.cs
- ChannelProtectionRequirements.cs
- SerializationSectionGroup.cs
- Int32Converter.cs
- ComboBox.cs
- TypeUnloadedException.cs
- DataService.cs
- StringToken.cs
- WorkflowPrinting.cs
- NativeMethods.cs
- ProfessionalColors.cs
- Span.cs
- XmlSchemaAnnotated.cs
- Message.cs
- QilDataSource.cs