OleDbTransaction.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 {
  48. return connection;
  49. }
  50. }
  51. IDbConnection IDbTransaction.Connection {
  52. get {
  53. return connection;
  54. }
  55. }
  56. public IsolationLevel IsolationLevel {
  57. get {
  58. return isolationLevel;
  59. }
  60. }
  61. #endregion // Properties
  62. #region Methods
  63. public OleDbTransaction Begin ()
  64. {
  65. return new OleDbTransaction (connection, depth + 1);
  66. }
  67. public OleDbTransaction Begin (IsolationLevel isolevel)
  68. {
  69. return new OleDbTransaction (connection, depth + 1, isolevel);
  70. }
  71. public void Commit ()
  72. {
  73. if (!libgda.gda_connection_commit_transaction (connection.GdaConnection,
  74. gdaTransaction))
  75. throw new InvalidOperationException ();
  76. }
  77. [MonoTODO]
  78. ~OleDbTransaction ()
  79. {
  80. }
  81. [MonoTODO]
  82. void IDisposable.Dispose ()
  83. {
  84. throw new NotImplementedException ();
  85. }
  86. public void Rollback ()
  87. {
  88. if (!libgda.gda_connection_rollback_transaction (connection.GdaConnection,
  89. gdaTransaction))
  90. throw new InvalidOperationException ();
  91. }
  92. #endregion // Methods
  93. }
  94. }