如何在 C 中使用 Fluentmigrator 创建具有 array 类型列的 PostgreSQL 表#

How to create a PostgreSQL table with column of type array using Fluentmigrator in C#

提问人:mp_in_training 提问时间:2/14/2023 最后编辑:James Zmp_in_training 更新时间:7/19/2023 访问量:145

问:

我可能忽略了一些简单的事情,我是 Fluentmigrator 的新手,但是是否可以在 C# 代码中使用 Fluentmigrator 创建一个表,其中包含 TEXT [] 类型的数组列?

下面是一个使用 SQL 语法来比较目标的示例,其中列“arrt”作为要创建的目标列:

CREATE TEMPORARY TABLE IF NOT EXISTS array_test (
    id SERIAL, 
    is_active BOOLEAN,
    arrt TEXT[]
);

我尝试通过Visual Studio intelli-sense检查可用方法的列表,但这并没有给我任何运气。 此外,虽然我不确定我是否在正确的地方寻找,但我确实尝试浏览了此处的类型列表,但没有显示任何迹象表明我可以看出它受到支持。WithColumn()

C# PostgreSQL Fluent-Migrator

评论


答:

0赞 ba-a-aton 2/14/2023 #1

根据您提供的链接和我自己的一些搜索,标准的 FluentMigrator 方法似乎无法做到这一点。

但是,您可以从迁移中运行 sql 脚本。不是最佳实践,但在某些情况下非常有帮助。在这里,您可以看到一些示例。“执行表达式”部分。

Execute.Script("myscript.sql");
Execute.EmbeddedScript("UpdateLegacySP.sql");
Execute.Sql("DELETE TABLE Users");

您也可以从 FluentMigrator 存储库创建分支并自行添加此方法。但是很难处理新的官方更新。

评论

0赞 mp_in_training 2/15/2023
目前,我实际上正在走剧本路线,但我也希望有更好的方法。尽管如此,你也证实了我的想法,我感谢你的帮助和时间。我喜欢在我自己分支中扩展它的想法,如果时间允许,这可能是一个有趣的项目。干杯
0赞 mp_in_training 11/1/2023
事实上,阿道夫的答案确实符合要求。如前所述,我仍然最终得到了一个自定义脚本,但我还想在这里补充一点,看起来它看起来是可能的,而不需要太:)
1赞 Adolf 7/19/2023 #2

这对我有用:

Create.Table("tablename")
                .WithColumn("columnname").AsCustom("TEXT[]").Nullable();

评论

0赞 mp_in_training 11/1/2023
嗨,@Adolf - 已经有一点时间了,但我又回到了这个。我终于可以测试这一点,它确实可以使用 AsCustom()。因此,对于未来的旅行者,我标记了这一点。好一个谢谢