2 // Mono.Data.SybaseClient.SybaseTransaction.cs
5 // Tim Coleman (tim@timcoleman.com)
7 // Copyright (C) Tim Coleman, 2002
10 using Mono.Data.TdsClient;
13 using System.Data.Common;
15 namespace Mono.Data.SybaseClient {
16 public sealed class SybaseTransaction : MarshalByRefObject, IDbTransaction, IDisposable
20 bool disposed = false;
22 SybaseConnection connection;
23 IsolationLevel isolationLevel;
30 internal SybaseTransaction (SybaseConnection connection, IsolationLevel isolevel)
32 this.connection = connection;
33 this.isolationLevel = isolevel;
37 #endregion // Constructors
41 public SybaseConnection Connection {
42 get { return connection; }
45 internal bool IsOpen {
46 get { return isOpen; }
49 public IsolationLevel IsolationLevel {
50 get { return isolationLevel; }
53 IDbConnection IDbTransaction.Connection {
54 get { return Connection; }
57 #endregion // Properties
64 throw new InvalidOperationException ("The Transaction was not open.");
65 connection.Tds.ExecuteNonQuery ("COMMIT TRANSACTION");
66 connection.Transaction = null;
70 private void Dispose (bool disposing)
79 public void Dispose ()
82 GC.SuppressFinalize (this);
85 public void Rollback ()
87 Rollback (String.Empty);
90 public void Rollback (string transactionName)
93 throw new InvalidOperationException ("The Transaction was not open.");
94 connection.Tds.ExecuteNonQuery (String.Format ("ROLLBACK TRANSACTION {0}", transactionName));
98 public void Save (string savePointName)
101 throw new InvalidOperationException ("The Transaction was not open.");
102 connection.Tds.ExecuteNonQuery (String.Format ("SAVE TRANSACTION {0}", savePointName));
105 #endregion // Methods