IDbTransaction Interface

Definição

Representa uma transação a ser executada em uma fonte de dados e é implementada por provedores de dados .NET que acessam bancos de dados relacionais.

public interface class IDbTransaction : IDisposable
public interface IDbTransaction : IDisposable
type IDbTransaction = interface
    interface IDisposable
Public Interface IDbTransaction
Implements IDisposable
Derivado
Implementações

Exemplos

O exemplo a seguir cria instâncias das classes SqlConnection derivadas e SqlTransaction. Ele também demonstra como usar os BeginTransactionmétodos e Rollback . Commit

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction();

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction()

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

Comentários

A IDbTransaction interface permite que uma classe herdada implemente uma classe Transaction, que representa a transação a ser executada em uma fonte de dados. Para obter mais informações sobre classes de transação, consulte Transações e Simultaneidade.

Um aplicativo não cria uma instância da IDbTransaction interface diretamente, mas cria uma instância de uma classe que herda IDbTransaction.

As classes herdadas IDbTransaction devem implementar os membros herdados e, normalmente, definir membros adicionais para adicionar funcionalidade específica do provedor. Por exemplo, a IDbTransaction interface define o Commit método. Por sua vez, a OleDbTransaction classe herda essa propriedade e também define o Begin método.

Notas aos Implementadores

Para promover a consistência entre os provedores de dados .NET Framework, nomeie a classe herdada no formulário Prv Transaction, em que Prv é o prefixo uniforme fornecido a todas as classes em um namespace específico do provedor de dados .NET Framework. Por exemplo, Sql é o prefixo da SqlTransaction classe no System.Data.SqlClient namespace.

Propriedades

Nome Description
Connection

Especifica o objeto Connection a ser associado à transação.

IsolationLevel

Especifica a IsolationLevel transação para essa transação.

Métodos

Nome Description
Commit()

Confirma a transação de banco de dados.

Dispose()

Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados.

(Herdado de IDisposable)
Rollback()

Reverte uma transação de um estado pendente.

Aplica-se a