Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: simson43 от 26-10-2018, 14:54:06

Название: Теоретический вопрос о Транзакциях
Отправлено: simson43 от 26-10-2018, 14:54:06
Здравствуйте!

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

Спасибо.
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: Дмитрий Загорулькин от 26-10-2018, 15:34:25
как вдруг мне нужно считать данные из внешней ссылки.
я просто открываю вторую транзакцию базы данных этой самой внешней ссылки?
Внешняя ссылка вставляется в виде блока в чертёж. Поэтому, насколько я понимаю, читать данные из неё можно просто как из обычного блока чертежа.
ну и блокирую документ внешней ссылки соответственно верно? или получая базу данных внешней ссылки не нужно блокировать?
Опять же, это зависит от того, как открывается внешняя ссылка и для каких целей.
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: simson43 от 26-10-2018, 16:08:40
получаю BlockTableRecord по objectId
затем получаю базу данных через GetXrefDatabase
затем открываю транзакцию и просто достаю информацию что мне нужна.
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: Дмитрий Загорулькин от 26-10-2018, 16:45:51
Если так - тогда есть пример: https://www.keanw.com/2015/01/modifying-the-contents-of-an-autocad-xref-using-net.html
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: simson43 от 26-10-2018, 18:25:52
Здесь т е наоборот?
Блокирует файл и без транзакции вовсе..
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: Дмитрий Загорулькин от 26-10-2018, 18:40:23
Насколько я вижу, там блокировка с помощью XrefFileLock.LockFile. Значит, блокировка используется.
А в методе ChangeEntityLinetype запускается транзакция для БД ссылки и идут манипуляции с её объектами. Так что, с транзакцией.
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: simson43 от 26-10-2018, 19:20:39
Ах да. Я невнимателен.
Т е блокировка все нужна?
Даже если я ничего не записываю и не меняю?
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: Александр Ривилис от 26-10-2018, 19:33:22
получаю BlockTableRecord по objectId
затем получаю базу данных через GetXrefDatabase
затем открываю транзакцию и просто достаю информацию что мне нужна.
Если только читаешь из этой базы, то блокировка не нужна.
Название: Re: Теоретический вопрос о Транзакциях
Отправлено: simson43 от 26-10-2018, 19:43:25
Спасибо всем большое!