ALTER TYPE ... ADD 无法在事务块内运行 - Entity Framework

2023-12-22

添加枚举时尝试运行到 PostGres 数据库的迁移时遇到错误。我正在使用 Dotnet5 和实体框架

更改类型ethicity_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");
    }

有什么想法如何解决这个问题吗?


根据阿德里安的评论,我发现你可以这样做。

  migrationBuilder.Sql("ALTER TYPE patient_ethnicity_enum ADD VALUE 'hi'", true);
  migrationBuilder.AlterDatabase();

“true”参数用于抑制交易。

这可行,但并不理想,因为回滚迁移可能会导致实时数据出现严重问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ALTER TYPE ... ADD 无法在事务块内运行 - Entity Framework 的相关文章

随机推荐