尝试使用实体框架代码优先迁移将列从文本字段更改为 jsonb 字段。
该列大部分都有存储为文本的 json 对象,但有些不是有效的 json。当尝试运行迁移时,它会抛出错误:
异常:42804:“消息”列无法自动转换为 jsonb 类型
代码:
migrationBuilder.AlterColumn<string>(
name: "Message",
schema: "database",
table: "ScheduledEvent",
type: "jsonb",
nullable: false,
oldClrType: typeof(string),
oldType: "text");
在这个帖子中,https://github.com/npgsql/efcore.pg/issues/144,他们有同样的问题,并说解决方案是添加一个
USING
子句。
如何更新代码优先 EF 模型以在迁移中添加
USING
子句?
如下更改您的迁移文件并更新迁移。会起作用的!!!
migrationBuilder.AlterColumn<string>(
name: "Message",
schema: "database",
table: "ScheduledEvent",
type: "jsonb USING \"Message\"::jsonb",
nullable: false,
oldClrType: typeof(string),
oldType: "text");