Добрый день, коллеги!
Теоретический вопрос, прошу прояснить ситуацию - если кто может дать ссылку или сам проводил эксперименты на эту тему.
Вопрос такой: какова лучшая практика в использовании транзакции - сколько операций рекомендуется проводить в рамках одной транзакции, как лучше поступать - все запихивать в одну транзакцию, или последовательно открывать/закрывать несколько транзакций, в рамках каждой из них выполняя однотипные операции.
В качестве примера могу привести вот такую задачу: мне нужно в активном чертеже на каждом листе (Layout) создать область печати, соответствующую по размерам объекта (Entity), который находится на этом листе, если его внешняя геометрия (GeometricExtents) соответствует размерам стандартных форматов листов (А4, А3 и т.д.)
Что я делаю:
1. Читаю словарь листов, получаю указатели на все листы, перебираю их, открываю каждый лист на чтение и получаю их свойства.
2. Перебираю все объекты чертежа, открываю их на чтение, и если их геометрия соответствует требованиям, для каждого листа сохраняю координаты будущей области печати.
3. Снова перебираю все листы, на этот раз открываю их на запись, и устанавливаю область печати по заранее вычисленным координатам.
При таком раскладе, я могу:
1. Открыть одну транзакцию и все три операции сделать в ее рамках.
2. Для каждой группы операций открывать/закрывать свою транзакцию, т.о. у меня будет три последовательных транзакции.
3. Открыть/закрыть транзакцию для первой операции, для второй операции - открывать/закрывать отдельную транзакцию для обработки объектов на каждом листе (т.е. транзакций будет столько, сколько листов в чертеже), и для третьей операции открыть/закрыть отдельную транзакцию.
Вопрос - как лучше делать, знаю, что можно сделать и так и так, но каковы рекомендации Autodesk по данному вопросу?