Еще надо иметь в виду объекты которые удаляются, можно подумать об методе
Database.ReclaimMemoryObjectIds(idsCollection), также диспозить объекты
не резиденты для данной Database
Объекты я не удаляю, так что мне пока без надобности. Но на будущее учту, спасибо!
Это TopTransaction она в курсе всех изменений
Не обязана знать. Но если интересно, то можешь поэкспериментировать.
Несколько противоречиво
Ладно, буду испытывать.
P.S.: Мне не нравится вообще использование Transaction.Abort, которая часто во много раз медленнее чем Transaction.Commit. Я бы задумался над изменением алгоритма.
Есть такое, на откат изменений довольно много времени уходит, но это несколько секунд. Предыдущий вариант моей программы был на VisualLISP, и гораздо больше времени занимал. Там, правда, алгоритм совершенно другой.
Согласен, никогда не использую метод Abort
Было очень заманчиво - так просто выполнить откат, без дополнительных телодвижений
А так, придется запоминать первоначальное состояние изменяемых объектов, а потом его восстанавливать. То есть, кода побольше получится, в варианте с отменой транзакции: просто изменить, в варианте без отмены: запомнить - изменить - восстановить. И при добавлении функционала нужно будет помнить, что изменения в 3 места надо вносить, вместо 1.
P.S.:Чтобы не сохранять изменения в базе данных можно еще посмотреть флаги
Где смотреть? Какие флаги?
P.S. Имеется в виду второй параметр метода AddNewlyCreatedDBObject?