AnyDAC(FireDAC) - 在TBlobField.GetAsString之后打开事务

时间:2018-03-05 17:08:01

标签: delphi transactions firedac autocommit anydac

目前我们正在将 Delphi7 应用程序的数据库组件从 BDE 组件迁移到 AnyDAC(FireDAC)版本8.0.5 组件。

提供以下先决条件:

  • 在我们的表单上,我们有一个TADConnection,一个TADQuery和一个TADTable。 TADQuery是TADTable的MasterSource。 AnyDAC组件的设置未进行任何特殊更改,因此 AutoCommit 模式处于活动状态。
  • 我们在表单上有一个TDBMemo,链接到TADTable的ftMemo字段(Firebird FieldType = Blob / Size = 240 / Subtype = Text)

在加载blob文本字段内容(TBlobField.GetAsString)期间,TADTable会自动启动一个未提交的事务

这种行为是正常的吗?我们是否有可能避免这种公开交易? 请注意,暂时停用AutoCommit是不可取的。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

是的,这是正常行为。只要你没有获取BLOB数据和详细信息元组,AnyDAC就会启动一个隐式事务来获取那些BLOB数据。