FireDAC ApplyUpdates无需清除增量

问题描述

是否可以在缓存更新模式下调用FireDAC查询上的Applyupdates,而无需清除其Delta?。

之所以这样做,是因为我有4个FDQuery,我想将它们保存在一起或在其中任何一个出现错误的情况下一起取消。如果发生任何问题,我可以使用一个事务来回滚所有更改,但这会使成功应用更新的每个FDQuery的Delta都为空。

因此,我想调用某种无法清除Delta的ApplyUpdates,只有所有FDQuerys ApplyUpdates成功后,我才会提交事务并在每个FDQuery上调用CommitUpdates以清除其Deltas。但是,如果其中之一失败,则每个FDQuery的更改仍将保留在其Delta中,因此我回滚了该事务,用户仍然可以修复数据并尝试再次保存它们。

更新:正如@Brian所说,将属性UpdateOptions.AutoCommitUpdates设置为False可以解决问题,并且不会清除Delta。

解决方法

UpdateOptions.AutoCommitUpdates设置为false将在调用ApplyUpdates时保留增量。但是,缺少有关AutoCommitUpdates的当前帮助,并且以一种令人困惑的方式错误地描述了False设置。应该更像是:

AutoCommitUpdates控制自动提交缓存的更新。

指定是否启用自动提交更新或 禁用。

  • 如果AutoCommitUpdates为True,则调用ApplyUpdates所应用的所有成功更新的记录将自动标记为未更改。您无需显式调用CommitUpdates。
  • 如果AutoCommitUpdates为False,则您的应用程序必须显式调用CommitUpdates以将所有更改的记录标记为未更改。

我放了一张票来修复帮助:RSP-31141