将 AnyDAC 应用程序迁移到 FireDAC 在 AutoInc 字段上失败

Migrating an AnyDAC app to FireDAC fails on the AutoInc fields

我已将 AnyDAC 应用程序迁移到 FireDAC,但我无法使用其 Autoinc 字段。

ID 字段(主键)已在 Postgre SQL 上定义为默认为 nextval('llistapanelspuzzle_id_seq'::regclass),BIGSERIAL,因此服务器会自动设置其值。

该列被 AnyDAC 识别为 TAutoincField 并且工作正常,但是当我现在在 FireDAC 上打开那个 table 时,它没有说找到的字段是 TLargeIntField。我将持久字段更改为 TLargeIntField,但现在在 Delphi 上插入记录时,我没有从服务器获取新值,它使数据集的值为 0,当我添加第二条记录时引发 Key Violation(主键上值为 0 的两条记录)。

当它们被识别为 LargeInt 字段时,您知道如何在 FireDAC - PostgreSQL 上定义 AutoInc 字段吗?

更新:我已将 ID 添加到 UpdateOptions.AutoIncFields,但它似乎没有任何改变。

谢谢。

看来您必须在 FDConnection 上激活 ExtendedMetada flag,以便 FireDAC 自动识别 PostgreSQL Autoinc 列。

现在可以正常工作了。