【发布时间】:2021-10-21 23:59:36
【问题描述】:
我在添加枚举时尝试迁移到 PostGres 数据库时遇到错误。我正在使用 Dotnet5 和实体框架
ALTER TYPE 种族_enum ADD VALUE 'hi'; Npgsql.PostgresException (0x80004005): 25001: ALTER TYPE ... ADD 不能在事务块内运行
这是创建的迁移:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:patient_ethnicity_enum", "afna,hi")
.OldAnnotation("Npgsql:Enum:patient_ethnicity_enum", "afna");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:Enum:patient_ethnicity_enum",
"afna")
.OldAnnotation("Npgsql:Enum:patient_ethnicity_enum",
"afna,hi");
}
有什么办法解决这个问题吗?
【问题讨论】:
-
在执行语句之前不要启动事务。
-
如何避免这种情况?它是通过作为 ef 的一部分的数据库更新命令完成的?
-
您使用的是 Postgres 版本 11 还是更低版本?
-
我不假装懂EF,但是Suppress transaction怎么样?尽管没有提供实际代码,但我也看到了使用原始 SQL 进行枚举更改的建议。
标签: postgresql entity-framework-core ef-code-first