Compartilhar via


SqlCeCommand.Transaction Property

Obtém ou define a transação na qual o SqlCeCommand é executado.

Namespace: System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (em system.data.sqlserverce.dll)

Sintaxe

'Declaração
Public Property Transaction As SqlCeTransaction
public SqlCeTransaction Transaction { get; set; }
public:
property SqlCeTransaction^ Transaction {
    SqlCeTransaction^ get ();
    void set (SqlCeTransaction^ value);
}
/** @property */
public SqlCeTransaction get_Transaction ()

/** @property */
public void set_Transaction (SqlCeTransaction value)
public function get Transaction () : SqlCeTransaction

public function set Transaction (value : SqlCeTransaction)

Valor da propriedade

A SqlCeTransaction. O valor padrão é null.

Comentários

Não será possível definir a propriedade Transaction se ela já estiver definida com um valor específico e o comando esteja em processo de execução. Se você definir a propriedade transaction de um objeto SqlCeTransaction que não está conectado à mesma SqlCeConnection que o objeto SqlCeCommand, será lançada uma exceção da próxima vez que uma instrução for executada.

Se o SqlCeCommand for executado com SqlCeTransaction definida como null, o comando será executado no modo de confirmação automática; assim, cada instrução será executada em sua própria transação.

Exemplo

Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'")
conn.Open()

' Start a local transaction
'
Dim tx As SqlCeTransaction = conn.BeginTransaction()

' By default, commands run in auto-commit mode; 
'
Dim cmd1 As SqlCeCommand = conn.CreateCommand()

' You may create multiple commands on the same connection
'
Dim cmd2 As SqlCeCommand = conn.CreateCommand()

' To enlist a command in a transaction, set the Transaction property
'
cmd1.Transaction = tx

Try
    cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')"
    cmd1.ExecuteNonQuery()

    ' Auto-commited because cmd2 is not enlisted in a transaction
    '
    cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Decker', 'Barbara')"
    cmd2.ExecuteNonQuery()

    ' This will cause referential constraint violation
    '
    cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1"
    cmd1.ExecuteNonQuery()

    ' Commit the changes to disk if everything above succeeded
    '
    tx.Commit()
Catch
    tx.Rollback()
Finally
    conn.Close()
End Try
SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'");
conn.Open();

// Start a local transaction
//
SqlCeTransaction tx = conn.BeginTransaction();

// By default, commands run in auto-commit mode; 
//
SqlCeCommand cmd1 = conn.CreateCommand();

// You may create multiple commands on the same connection
//
SqlCeCommand cmd2 = conn.CreateCommand();

// To enlist a command in a transaction, set the Transaction property
//
cmd1.Transaction = tx;

try
{
    cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')";
    cmd1.ExecuteNonQuery();

    // Auto-commited because cmd2 is not enlisted in a transaction
    //
    cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Decker', 'Barbara')";
    cmd2.ExecuteNonQuery();

    // This will cause referential constraint violation
    //
    cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1";
    cmd1.ExecuteNonQuery();

    // Commit the changes to disk if everything above succeeded
    //
    tx.Commit();
}
catch (Exception)
{
    tx.Rollback();
}
finally
{
    conn.Close();
}

Segurança de thread

Quaisquer membros estáticos públicos (compartilhados no Microsoft Visual Basic) desse tipo são thread safe. Não há garantia de que qualquer membro de instância seja thread safe.

Plataformas

Plataformas de desenvolvimento

Windows Vista, Windows Mobile 5.0, Windows XP Professional with Service Pack 2 (SP2), Windows Server 2003, Windows Mobile 2003 for Pocket PC, Windows CE 5.0
Informações de versão
.NET Framework e NET Compact Framework
Com suporte no 3.5
.NET Framework
Com suporte no 3.0
.NET Compact Framework e .Net Framework
Com suporte no 2.0

Consulte também

Referência

SqlCeCommand Class
SqlCeCommand Members
System.Data.SqlServerCe Namespace