public void ExplicitEnlist() { using (var conn = new NpgsqlConnection(ConnectionString)) using (var scope = new TransactionScope()) { conn.Open(); conn.EnlistTransaction(Transaction.Current); Assert.That(conn.ExecuteNonQuery(@"INSERT INTO data (name) VALUES('test')"), Is.EqualTo(1)); scope.Complete(); } AssertNoPreparedTransactions(); using (var conn = OpenConnection()) Assert.That(conn.ExecuteScalar(@"SELECT COUNT(*) FROM data"), Is.EqualTo(1)); }
public void SimpleTransactionScopeWithExplicitEnlist() { string connectionString = TheConnectionString; using (var connection = new NpgsqlConnection(connectionString)) { using (var scope = new TransactionScope()) { connection.Open(); connection.EnlistTransaction(Transaction.Current); var command = new NpgsqlCommand("insert into tablea(field_text) values (:p0)", connection); command.Parameters.Add(new NpgsqlParameter("p0", "test")); Assert.AreEqual(1, command.ExecuteNonQuery()); scope.Complete(); } } AssertNoTransactions(); }
public void SimpleTransactionScopeWithExplicitEnlist() { try { string connectionString = TheConnectionString; using (var connection = new NpgsqlConnection(connectionString)) { using (var scope = new TransactionScope()) { connection.Open(); connection.EnlistTransaction(Transaction.Current); var command = new NpgsqlCommand("insert into tablea(field_text) values (:p0)", connection); command.Parameters.Add(new NpgsqlParameter("p0", "test")); Assert.AreEqual(1, command.ExecuteNonQuery()); scope.Complete(); } } AssertNoTransactions(); // Clean up data left in the last transaction. var cleanCommand = new NpgsqlCommand("delete from tablea where field_text = (:p0)", TheConnection); cleanCommand.Parameters.Add(new NpgsqlParameter("p0", "test")); Assert.AreEqual(1, cleanCommand.ExecuteNonQuery()); // This transaction should commit. CommitTransaction = true; } catch (System.NotImplementedException) {} // Mono version below 3.0 doesn't implement transaction methods. So just ignore. }