Speichern von Daten mithilfe einer Transaktion in .NET Framework-Anwendungen

Hinweis

Datasets und verwandte Klassen sind ältere .NET-Technologien aus den frühen 2000er Jahren, die es Anwendungen ermöglichen, mit Daten im Arbeitsspeicher zu arbeiten, während die Anwendungen von der Datenbank getrennt sind. Die Technologien sind besonders nützlich für Anwendungen, die es Benutzern ermöglichen, Daten zu ändern und die Änderungen wieder in der Datenbank zu speichern. Obwohl sich Datasets als sehr erfolgreiche Technologie erwiesen haben, empfehlen wir, dass neue .NET-Anwendungen Entity Framework Core verwenden. Entity Framework bietet eine natürlichere Möglichkeit, mit tabellarischen Daten als Objektmodelle zu arbeiten, und verfügt über eine einfachere Programmierschnittstelle.

Sie speichern Daten in einer Transaktion, indem Sie den System.Transactions-Namespace verwenden. Verwenden Sie das TransactionScope-Objekt, sodass es an einer Transaktion teilnimmt, die automatisch für Sie verwaltet wird.

Projekte werden nicht mit einem Verweis auf die System.Transactions-Assembly erstellt. Daher müssen Sie manuell einen Verweis auf Projekte hinzufügen, die Transaktionen verwenden.

Die einfachste Möglichkeit zum Implementieren einer Transaktion besteht darin, ein TransactionScope-Objekt in einer using-Anweisung zu instanziieren. Weitere Informationen finden Sie unter using-Anweisung und using-Anweisung). Der Code, der innerhalb der using-Anweisung ausgeführt wird, ist an der Transaktion beteiligt.

Um die Transaktion durchzuführen, rufen Sie die Complete-Methode als letzte Anweisung im using-Block auf.

Um ein Rollback der Transaktion auszuführen, lösen Sie vor dem Aufrufen der Complete-Methode eine Ausnahme aus.

So fügen Sie einen Verweis auf System.Transactions.dll hinzu

  1. Wählen Sie im Menü Projekt die Option Verweis hinzufügen aus.

  2. Wählen Sie auf der Registerkarte .NET (Registerkarte SQL Server für SQL Server-Projekte) die Option System.Transactions und dann OK aus.

    Dem Projekt wird ein Verweis auf System.Transactions.dll hinzugefügt.

Speichern von Daten in einer Transaktion

  • Fügen Sie Code hinzu, der Daten in der using-Anweisung speichert, die die Transaktion enthält. Der folgende Code zeigt, wie Sie ein TransactionScope-Objekt in einer using-Anweisung erstellen und instanziieren:

    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();
    }