AnyDAC (FireDAC) - открытая транзакция после TBlobField.GetAsString

В настоящее время мы переносим компонент базы данных нашего приложения Delphi7 из компонентов BDE в компоненты AnyDAC (FireDAC) версии 8.0.5.

Предоставляются следующие предпосылки:

  • В нашей форме у нас есть одно TADConnection, одно TADQuery и одно TADTable. TADQuery является главным источником для TADTable. Никаких специальных изменений в настройках компонентов AnyDAC внесено не было, поэтому режим AutoCommit активен.
  • Более того, у нас есть одна TDBMemo в нашей форме, которая связана с полем ftMemo в TADTable (Firebird FieldType = Blob / Size = 240 / Subtype = Text)

Во время загрузки содержимого текстового поля BLOB-объекта (TBlobField.GetAsString) TADTable автоматически запускает транзакцию, которая не будет зафиксирована.

Это нормальное поведение? Есть ли у нас возможность избежать этой открытой транзакции? Обратите внимание, что отключение AutoCommit на данный момент не вариант.

Любая помощь приветствуется.

1 ответ

Да, это нормальное поведение. До тех пор, пока вы не извлекаете BLOB-данные вместе с подробным кортежем, AnyDAC запускает неявную транзакцию для извлечения этих BLOB-данных.

Другие вопросы по тегам