Compartilhar via


Salvar dados usando uma transação em aplicativos do .NET Framework

Observação

Os conjuntos de dados e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos estão desconectados do banco de dados. Eles são bastante úteis em aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados tenham se mostrado uma tecnologia muito bem-sucedida, é recomendado que os novos aplicativos .NET usem o Entity Framework Core. O Entity Framework proporciona uma forma mais natural de trabalhar com dados tabulares como modelos de objeto e conta com uma interface de programação mais simples.

Salve dados em uma transação usando o namespace System.Transactions. Use o objeto TransactionScope a fim de participar de uma transação que é gerenciada automaticamente para você.

Os projetos não são criados com uma referência ao assembly System.Transactions, ou seja, você precisa adicionar manualmente uma referência a projetos que usam transações.

A maneira mais fácil de implementar uma transação é criar uma instância de um objeto TransactionScope em uma instrução using. (Para obter mais informações, confira Instrução using e instrução using.) O código executado dentro da instrução using participa da transação.

Para confirmar a transação, chame o método Complete como a última instrução no bloco using.

Para reverter a transação, gere uma exceção antes de chamar o método Complete.

Para adicionar uma referência ao arquivo System.Transactions.dll

  1. No menu Projeto, selecione Adicionar Referência.

  2. Na guia .NET (guia SQL Server para projetos do SQL Server), selecione System.Transactions e selecione OK.

    Uma referência a System.Transactions.dll é adicionada ao projeto.

Para salvar dados em uma transação

  • Adicione código para salvar dados na instrução using que contém a transação. O código a seguir mostra como criar e instanciar um objeto TransactionScope em uma instrução using:

    using (System.Transactions.TransactionScope updateTransaction = 
        new System.Transactions.TransactionScope())
    {
        // Add code to save your data here.
        // Throw an exception to roll back the transaction.
    
        // Call the Complete method to commit the transaction
        updateTransaction.Complete();
    }