Condividi tramite


SqlTransaction Classe

Definizione

Rappresenta una transazione Transact-SQL da eseguire in un database SQL Server. La classe non può essere ereditata.

public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public ref class SqlTransaction sealed : MarshalByRefObject, IDisposable, System::Data::IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
type SqlTransaction = class
    inherit DbTransaction
type SqlTransaction = class
    inherit MarshalByRefObject
    interface IDbTransaction
    interface IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Ereditarietà
SqlTransaction
Ereditarietà
Ereditarietà
SqlTransaction
Implementazioni

Esempio

Nell'esempio seguente viene creato un oggetto SqlConnection e un oggetto SqlTransaction. Viene inoltre illustrato come usare i BeginTransactionmetodi , Commite Rollback . Viene eseguito il rollback della transazione in caso di errore o se viene eliminato senza prima essere sottoposto a commit. Try / Catch La gestione degli errori viene usata per gestire eventuali errori durante il tentativo di eseguire il commit o il rollback della transazione.

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

Commenti

L'applicazione crea un SqlTransaction oggetto chiamando BeginTransaction sull'oggetto SqlConnection . Tutte le operazioni successive associate alla transazione (ad esempio, il commit o l'interruzione della transazione) vengono eseguite sull'oggetto SqlTransaction .

Nota

Try / Catch La gestione delle eccezioni deve essere sempre usata durante il commit o il rollback di un oggetto SqlTransaction. Sia Commit che Rollback generano un InvalidOperationException valore se la connessione viene terminata o se è già stato eseguito il rollback della transazione nel server.

Per altre informazioni sulle transazioni SQL Server, vedere Transazioni esplicite e codifica di transazioni efficienti.

Proprietà

Connection

Ottiene l'oggetto SqlConnection associato alla transazione o null se la transazione non è più valida.

DbConnection

In caso di override in una classe derivata, ottiene l'oggetto DbConnection associato alla transazione.

(Ereditato da DbTransaction)
IsolationLevel

Specifica l'oggetto IsolationLevel per questa transazione.

SupportsSavepoints

Ottiene un valore che indica se questa istanza di DbTransaction supporta i punti di salvataggio del database. Se false, i metodi SaveAsync(String, CancellationToken), RollbackAsync(String, CancellationToken) e ReleaseAsync(String, CancellationToken) nonché le relative controparti sincrone dovrebbero generare NotSupportedException.

(Ereditato da DbTransaction)

Metodi

Commit()

Esegue il commit della transazione di database.

CommitAsync(CancellationToken)

Esegue il commit della transazione di database in modo asincrono.

(Ereditato da DbTransaction)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia le risorse contenute nell'oggetto.

Dispose()

Rilascia le risorse non gestite utilizzate dall'oggetto DbTransaction.

(Ereditato da DbTransaction)
Dispose(Boolean)

Rilascia le risorse non gestite usate da DbTransaction e, facoltativamente, le risorse gestite.

(Ereditato da DbTransaction)
DisposeAsync()

Elimina in modo asincrono l'oggetto transazione.

(Ereditato da DbTransaction)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
Release(String)

Elimina definitivamente un punto di salvataggio definito nella transazione corrente. In questo modo il sistema può recuperare alcune risorse prima che la transazione termini.

(Ereditato da DbTransaction)
ReleaseAsync(String, CancellationToken)

Elimina definitivamente un punto di salvataggio definito nella transazione corrente. In questo modo il sistema può recuperare alcune risorse prima che la transazione termini.

(Ereditato da DbTransaction)
Rollback()

Esegue il rollback di una transazione da uno stato in sospeso.

Rollback(String)

Esegue il rollback di una transazione da uno stato in sospeso e specifica la transazione o il nome del punto di salvataggio.

RollbackAsync(CancellationToken)

Esegue il rollback di una transazione da uno stato in sospeso in modo asincrono.

(Ereditato da DbTransaction)
RollbackAsync(String, CancellationToken)

Esegue il rollback di tutti i comandi eseguiti dopo che è stato stabilito il punto di salvataggio specificato.

(Ereditato da DbTransaction)
Save(String)

Crea un punto di salvataggio nella transazione, utilizzabile per eseguire il rollback di una parte della transazione, e specifica il nome del punto di salvataggio.

SaveAsync(String, CancellationToken)

Crea un punto di salvataggio nella transazione. In questo modo è possibile eseguire il rollback di tutti i comandi eseguiti dopo che è stato stabilito il punto di salvataggio, ripristinando lo stato della transazione al momento del punto di salvataggio.

(Ereditato da DbTransaction)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDbTransaction.Connection

Ottiene l'oggetto DbConnection associato alla transazione o un riferimento Null se la transazione non è più valida.

(Ereditato da DbTransaction)

Si applica a

Vedi anche