Поделиться через


Сохранение данных с помощью транзакции в приложениях .NET Framework

Замечание

Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.

Данные сохраняются в транзакции с помощью System.Transactions пространства имен. TransactionScope Используйте объект для участия в транзакции, которая автоматически управляется вами.

Проекты не создаются со ссылкой на сборку System.Transactions , поэтому необходимо вручную добавить ссылку на проекты, использующие транзакции.

Самый простой способ реализовать транзакцию — создать экземпляр TransactionScope объекта в инструкции using . (Дополнительные сведения см. в инструкции Using и Инструкции Using.) Код, который выполняется в инструкции using , участвует в транзакции.

Чтобы зафиксировать транзакцию, вызовите Complete метод в качестве последней инструкции в блоке using.

Чтобы откатить транзакцию, создайте исключение перед вызовом Complete метода.

Добавление ссылки на System.Transactions.dll

  1. В меню "Проект" выберите "Добавить ссылку".

  2. На вкладке (вкладка .NETSQL Server для проектов SQL Server) выберите System.Transactions и нажмите кнопку "ОК".

    Ссылка на System.Transactions.dll добавляется в проект.

Сохранение данных в транзакции

  • Добавьте код для сохранения данных в инструкции using, содержащей транзакцию. В следующем коде показано, как создать и инициализировать объект TransactionScope в инструкции 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();
    }