ALTER TYPE ... ADD 不能 运行 在事务块内 - Entity Framework
ALTER TYPE ... ADD cannot run inside a transaction block - Entity Framework
我在添加枚举时尝试 运行 迁移到 PostGres 数据库时遇到错误。我正在使用 Dotnet5 和 Entity Framework
更改类型 ethnicity_enum 添加值 '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");
}
有什么解决办法吗?
根据 Adrian 的评论,我发现您可以这样做。
migrationBuilder.Sql("ALTER TYPE patient_ethnicity_enum ADD VALUE 'hi'", true);
migrationBuilder.AlterDatabase();
“true”参数用于抑制交易。
这可行,但并不理想,因为回滚迁移可能会导致实时数据出现大量问题。
我在添加枚举时尝试 运行 迁移到 PostGres 数据库时遇到错误。我正在使用 Dotnet5 和 Entity Framework
更改类型 ethnicity_enum 添加值 '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");
}
有什么解决办法吗?
根据 Adrian 的评论,我发现您可以这样做。
migrationBuilder.Sql("ALTER TYPE patient_ethnicity_enum ADD VALUE 'hi'", true);
migrationBuilder.AlterDatabase();
“true”参数用于抑制交易。
这可行,但并不理想,因为回滚迁移可能会导致实时数据出现大量问题。