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 ref class SqlTransaction sealed : System::Data::Common::DbTransaction, IDisposable
public sealed class SqlTransaction : System.Data.Common.DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction, IDisposable
type SqlTransaction = class
    inherit DbTransaction
type SqlTransaction = class
    inherit MarshalByRefObject
    interface IDbTransaction
    interface IDisposable
type SqlTransaction = class
    inherit DbTransaction
    interface IDbTransaction
    interface IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Implements IDisposable
Ereditarietà
SqlTransaction
Ereditarietà
Ereditarietà
SqlTransaction
Implementazioni

Esempio

Nell'esempio seguente vengono creati un SqlConnection oggetto e un oggetto SqlTransaction . Illustra anche come usare i BeginTransaction metodi Commit , e Rollback . Viene eseguito il rollback della transazione in caso di errore o se viene eliminata senza prima eseguire il commit. Try/Catch La gestione degli errori viene utilizzata 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("SampleTransaction");

        // 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("SampleTransaction")

        ' 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 SqlTransaction un oggetto chiamando BeginTransaction SqlConnection sull'oggetto . Tutte le operazioni successive associate alla transazione, ad esempio il commit o l'interruzione della transazione, vengono eseguite SqlTransaction sull'oggetto .

Nota

Try/Catch La gestione delle eccezioni deve essere sempre utilizzata quando si esegue il commit o il rollback di un SqlTransaction oggetto . Sia che generano un oggetto se la connessione viene terminata o se è già stato eseguito il rollback della Commit Rollback InvalidOperationException 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()
Obsoleta.

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()
Obsoleta.

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. Ciò consente al sistema di recuperare alcune risorse prima del termine della transazione.

(Ereditato da DbTransaction)
ReleaseAsync(String, CancellationToken)

Elimina definitivamente un punto di salvataggio definito nella transazione corrente. Ciò consente al sistema di recuperare alcune risorse prima del termine della transazione.

(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