2

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

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

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

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

4

1 回答 1

2

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

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

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

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

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

于 2020-09-28T20:27:27.497 回答