OleDbReferenceCollection.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //------------------------------------------------------------------------------
  2. // <copyright file="OleDbReferenceCollection.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">[....]</owner>
  6. // <owner current="true" primary="false">[....]</owner>
  7. //------------------------------------------------------------------------------
  8. namespace System.Data.OleDb {
  9. using System;
  10. using System.Data;
  11. using System.Data.Common;
  12. using System.Data.ProviderBase;
  13. using System.Diagnostics;
  14. using System.Runtime.InteropServices;
  15. sealed internal class OleDbReferenceCollection : DbReferenceCollection {
  16. internal const int Closing = 0;
  17. internal const int Canceling = -1;
  18. internal const int CommandTag = 1;
  19. internal const int DataReaderTag = 2;
  20. override public void Add(object value, int tag) {
  21. base.AddItem(value, tag);
  22. }
  23. override protected void NotifyItem(int message, int tag, object value) {
  24. bool canceling = (Canceling == message);
  25. if (CommandTag == tag) {
  26. ((OleDbCommand) value).CloseCommandFromConnection(canceling);
  27. }
  28. else if (DataReaderTag == tag) {
  29. ((OleDbDataReader) value).CloseReaderFromConnection(canceling);
  30. }
  31. else {
  32. Debug.Assert(false, "shouldn't be here");
  33. }
  34. }
  35. override public void Remove(object value) {
  36. base.RemoveItem(value);
  37. }
  38. }
  39. }