В последнее время я использую транзакцию (Transaction) только в тестовых приложениях и демонстрационных примерах. В рабочем коде я от нее практически избавился. К сожалению, непредсказуемых проблем от нее больше, чем пользы. OpenCloseTransaction тоже практически полностью исключил. Мне гораздо спокойнее действовать по схеме: открыл->прочитал и сохранил нужные данные в переменных -> закрыл, либо открыл -> изменил -> закрыл. Да, конечно, кода получается больше. Но это небольшая цена за бОльшую стабильность работы приложения.