ADN Club > AutoCAD .NET API

Правильный откат изменений в рамках транзакции. Как?

(1/4) > >>

Дмитрий Загорулькин:
Здравствуйте!
Имеется метод, в процессе выполнения которого создаются временные объекты, которые затем экспортируются в новый чертеж. Схематично это выглядит так:

--- Код: ---Запуск транзакции
      Создание новых примитивов
            Добавление примитивов в пространство модели и в транзакцию           
       Копирование примитивов в новый чертеж
Завершение транзакции
--- Конец кода ---
Мне нужно, чтобы по завершении метода чертеж вернулся в исходное состояние.
1. Правильно я понимаю, что если транзакцию не подтвердить, то это произойдет автоматически?
2. Достаточно ли просто не добавлять Transaction.Commit() или нужно обязательно вызывать Transaction.Abort()?
3. Нужно ли уничтожать каким-либо образом созданные в транзакции объекты дополнительно?

Спасибо.

Дмитрий Загорулькин:
Сделал перед завершением транзакции Transaction.Abort(). Дополнительно никакого уничтожения создаваемых объектов не выполнял. Вроде работает как надо, пока никаких проблем не обнаружил.

Алексей Кулик:
Прошу прощения, Александр Ривилис сейчас в отпуске, вернется не раньше понедельника. Думаю, он Вам подскажет ответы на вопросы. Я, к сожалению, не обладаю достаточной квалификацией для этого :(

Дмитрий Загорулькин:
Ан нет, портится чертеж :(. То есть, такой подход не гарантирует откат всего, что внутри транзакции произошло.

Александр Ривилис:

--- Цитата: Загорулькин Дмитрий от 26-07-2013, 13:16:56 ---То есть, такой подход не гарантирует откат всего, что внутри транзакции произошло.
--- Конец цитаты ---
Откатывается только то, что управляется транзакцией.
P.S.: Честно говоря я не понял полную задачу. Например, зачем нужно добавлять примитивы в текущий чертеж?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии