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


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

Примечание.

Наборы данных и связанные классы являются устаревшими технологиями платформа .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. На вкладке (вкладка .NET SQL 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();
    }