TransactionManager Database или Document

Автор Тема: TransactionManager Database или Document  (Прочитано 6140 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн GermanАвтор темы

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
TransactionManager Database или Document
« : 16-02-2015, 11:47:53 »
Добрый день!

Не в первый раз натыкаюсь на это:
Кстати, еще и замени строку
Код - C#: [Выделить]
using (trans = db.TransactionManager.StartOpenCloseTransaction())
на
Код - C#: [Выделить]
using (trans = doc.TransactionManager.StartOpenCloseTransaction())

Разъясните, пожалуйста, чем лучше?

Отмечено как Решение German 16-02-2015, 15:10:47

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: TransactionManager Database или Document
« Ответ #1 : 16-02-2015, 14:19:07 »
Применительно к текущему документу и его Database судя по всему это почти одно и тоже. Пожалуй за исключением двух методов, которые есть только у менеджера транзакций документа, но нет у менеджера транзакций базы:
Код - C# [Выбрать]
  1. public void EnableGraphicsFlush(bool doEnable);
  2. public void FlushGraphics();
Первый из этих методов включает/выключает разрешение на обновление изменённой в транзакции графики, а второй выполняет принудительное  обновление этой графики.
В остальном судя по всему они аналогичны, за исключением того, что Document.TransactionManager не применим к базам, которые не являются документами (открыты через Database.ReadDwgFile()). Вот парочка исследований по этому поводу:
http://spiderinnet1.typepad.com/blog/2012/04/database-transactionmanager-and-document-transactionmanager.html
http://spiderinnet1.typepad.com/blog/2012/05/document-transactionmanager-is-nowhere-for-external-databases.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн GermanАвтор темы

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
Re: TransactionManager Database или Document
« Ответ #2 : 16-02-2015, 14:50:25 »
Хм. Во второй ссылке, если я понял верно, рекомендуют использовать Database.TransactionManager для поддержки расширяемости кода.
...
А использование в коде Document.TransactionManager позволяет "сузить код", создавая как бы "контракт" существования документа для базы?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: TransactionManager Database или Document
« Ответ #3 : 16-02-2015, 14:52:39 »
А использование в коде Document.TransactionManager позволяет "сузить код", создавая как бы "контракт" существования документа для базы?
Это позволяет как бы поставить крест на быстрой пакетной обработки чертежей. Тебе придётся под каждый обрабатываемый файл создавать документ, что весьма негативно скажется на производительности. Поэтому я предпочитаю работать в контексте Database. Да и переносимость страдает, но об этом тут говорить не велено... Использовать контекст документа я бы стал только если на это есть веские причины, такие как вызов обозначенных дополнительных методов (что возникает редко).

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: TransactionManager Database или Document
« Ответ #4 : 16-02-2015, 14:53:12 »
А использование в коде Document.TransactionManager позволяет "сузить код", создавая как бы "контракт" существования документа для базы?
Для меня более существенна возможность использования двух указанных мной методов, т.е. оперативное управление обновлением графики.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн GermanАвтор темы

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
Re: TransactionManager Database или Document
« Ответ #5 : 16-02-2015, 15:10:42 »
Мнения разделились. Я использовал всегда Database и продолжу все-таки использовать его. Для моего случая (Civil3D) Database вообще ключ ко всему...
За разъяснение спасибо!