Теоретический вопрос о Транзакциях

Автор Тема: Теоретический вопрос о Транзакциях  (Прочитано 7047 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Здравствуйте!

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

Спасибо.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
как вдруг мне нужно считать данные из внешней ссылки.
я просто открываю вторую транзакцию базы данных этой самой внешней ссылки?
Внешняя ссылка вставляется в виде блока в чертёж. Поэтому, насколько я понимаю, читать данные из неё можно просто как из обычного блока чертежа.
ну и блокирую документ внешней ссылки соответственно верно? или получая базу данных внешней ссылки не нужно блокировать?
Опять же, это зависит от того, как открывается внешняя ссылка и для каких целей.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
получаю BlockTableRecord по objectId
затем получаю базу данных через GetXrefDatabase
затем открываю транзакцию и просто достаю информацию что мне нужна.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Здесь т е наоборот?
Блокирует файл и без транзакции вовсе..

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Насколько я вижу, там блокировка с помощью XrefFileLock.LockFile. Значит, блокировка используется.
А в методе ChangeEntityLinetype запускается транзакция для БД ссылки и идут манипуляции с её объектами. Так что, с транзакцией.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Ах да. Я невнимателен.
Т е блокировка все нужна?
Даже если я ничего не записываю и не меняю?

Отмечено как Решение simson43 26-10-2018, 19:43:53

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
получаю BlockTableRecord по objectId
затем получаю базу данных через GetXrefDatabase
затем открываю транзакцию и просто достаю информацию что мне нужна.
Если только читаешь из этой базы, то блокировка не нужна.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Спасибо всем большое!