OleDbTransaction.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // System.Data.OleDb.OleDbTransaction
  3. //
  4. // Authors:
  5. // Rodrigo Moya ([email protected])
  6. // Tim Coleman ([email protected])
  7. //
  8. // Copyright (C) Rodrigo Moya, 2002
  9. // Copyright (C) Tim Coleman, 2002
  10. //
  11. using System.Data;
  12. using System.Data.Common;
  13. namespace System.Data.OleDb
  14. {
  15. public sealed class OleDbTransaction : MarshalByRefObject, IDbTransaction, IDisposable
  16. {
  17. #region Fields
  18. OleDbConnection connection;
  19. IsolationLevel isolationLevel;
  20. IntPtr gdaTransaction;
  21. int depth;
  22. #endregion // Fields
  23. #region Constructors
  24. internal OleDbTransaction (OleDbConnection connection, int depth)
  25. {
  26. this.connection = connection;
  27. isolationLevel = IsolationLevel.ReadCommitted;
  28. gdaTransaction = libgda.gda_transaction_new (depth.ToString ());
  29. libgda.gda_connection_begin_transaction (connection.GdaConnection, gdaTransaction);
  30. }
  31. internal OleDbTransaction (OleDbConnection connection)
  32. : this (connection, 1)
  33. {
  34. }
  35. internal OleDbTransaction (OleDbConnection connection, int depth, IsolationLevel isolevel)
  36. : this (connection, depth)
  37. {
  38. isolationLevel = isolevel;
  39. }
  40. internal OleDbTransaction (OleDbConnection connection, IsolationLevel isolevel)
  41. : this (connection, 1, isolevel)
  42. {
  43. }
  44. #endregion // Constructors
  45. #region Properties
  46. public OleDbConnection Connection {
  47. get { return connection; }
  48. }
  49. public IsolationLevel IsolationLevel {
  50. get { return isolationLevel; }
  51. }
  52. IDbConnection IDbTransaction.Connection {
  53. get { return connection; }
  54. }
  55. #endregion // Properties
  56. #region Methods
  57. public OleDbTransaction Begin ()
  58. {
  59. return new OleDbTransaction (connection, depth + 1);
  60. }
  61. public OleDbTransaction Begin (IsolationLevel isolevel)
  62. {
  63. return new OleDbTransaction (connection, depth + 1, isolevel);
  64. }
  65. public void Commit ()
  66. {
  67. if (!libgda.gda_connection_commit_transaction (connection.GdaConnection, gdaTransaction))
  68. throw new InvalidOperationException ();
  69. }
  70. [MonoTODO]
  71. ~OleDbTransaction ()
  72. {
  73. }
  74. [MonoTODO]
  75. void IDisposable.Dispose ()
  76. {
  77. throw new NotImplementedException ();
  78. }
  79. public void Rollback ()
  80. {
  81. if (!libgda.gda_connection_rollback_transaction (connection.GdaConnection, gdaTransaction))
  82. throw new InvalidOperationException ();
  83. }
  84. #endregion // Methods
  85. }
  86. }