在 .NET Framework 应用程序中使用事务保存数据

注意

数据集和相关类是 2000 年代初的旧 .NET Framework 技术,使应用程序能够在应用程序与数据库断开连接时处理内存中的数据。 这些方法对于使用户能够修改数据并持续更改回数据库的应用程序特别有用。 虽然数据集已被证明是一项非常成功的技术,但我们建议新的 .NET 应用程序使用 Entity Framework Core。 实体框架提供了一种更自然的方式来将表格数据作为对象模型,并且具有更简单的编程接口。

通过使用 System.Transactions 命名空间将数据保存在事务中。 使用 TransactionScope 对象参与自动为你管理的事务。

项目不是通过对 System.Transactions 程序集的引用创建的,因此,你需要向使用事务的项目手动添加引用。

实现事务最简单的方法是在 using 语句中实例化 TransactionScope 对象。 (有关详细信息,请参阅 Using 语句Using 语句。)在 using 语句中运行的代码会参与事务。

若要提交事务,请调用 Complete 方法作为 using 块中的最后一条语句。

若要回滚事务,请在调用 Complete 方法之前引发异常。

添加对 System.Transactions.dll 的引用

  1. 在“项目”菜单中,选择“添加引用”。

  2. .NET 选项卡(SQL Server 项目的“SQL Server”选项卡)上,选择“System.Transactions”,然后选择“确定”。

    对“System.Transactions.dll”的引用会添加到项目中。

将数据保存在事务中

  • 添加代码将数据保存在包含事务的 using 语句中。 下面的代码展示了如何在 using 语句中创建和实例化 TransactionScope 对象:

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