如何在 CockroachDB 中使用 Fluent Migrator 自动生成unique_rowId?

How to auto-generate unique_rowId with Fluent Migrator in CockroachDB?

提问人:Aiyuni 提问时间:5/5/2023 最后编辑:Aiyuni 更新时间:5/12/2023 访问量:78

问:

我在 NET 6 中使用 Fluent Migrator。

我正在尝试将unique_rowId设置为 int64 列。在蟑螂 DB 上,我会使用

Create table x (version INT NOT NULL DEFAULT unique_rowid())

使用流畅的迁移器,我找不到执行上述操作的方法。

我试过这个:Create.Table("x").WithColumn("version").AsInt165().NotNullable().WithDefaultValue(SystemMethods.NewGuid)

但这会失败,因为 SystemMethods.NewGuid(以及相关的 SystemMethods.NewSequentialId)都返回 GUID,并且列是 int 类型。

是否可以使用流畅的迁移器执行此操作?

C# net-6.0 CockroachDB Fluent-Migrator

评论

0赞 RCX 5/5/2023
作为快速解决方法。您是否有可能运行原始 DDL 语句而不是以这种方式构造语句?我怀疑它需要在适配器上做一些工作。
0赞 Aiyuni 5/5/2023
@RCX我知道只有运行原始 sql 语句才能解决,但我问这个问题是为了看看是否可以以这种更简单的方式做到这一点。
0赞 moinmaroofi 5/10/2023
Fluent Migrator 不提供用于生成 INT64 类型的唯一行 ID 的内置方法。但是,您可以通过在迁移脚本中使用自定义 SQL 语句来实现所需的功能。
0赞 Aiyuni 5/12/2023
我相信我找到了答案。我们可以使用 .用于生成唯一行 ID 的标识方法:Create.Table("x").WithColumn("version").Identity();

答:

0赞 Aiyuni 5/12/2023 #1

我相信我们可以用来生成 int 类型的unique_rowid。Create.Table("x").WithColumn("version").Identity()