如何使用 USING 将实体框架列更改为 jsonb?

问题描述 投票:0回答:1

尝试使用实体框架代码优先迁移将列从文本字段更改为 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
子句?

c# .net entity-framework entity-framework-core jsonb
1个回答
0
投票

如下更改您的迁移文件并更新迁移。会起作用的!!!

migrationBuilder.AlterColumn<string>(
    name: "Message",
    schema: "database",
    table: "ScheduledEvent",
    type: "jsonb USING \"Message\"::jsonb",
    nullable: false,
    oldClrType: typeof(string),
    oldType: "text");

© www.soinside.com 2019 - 2024. All rights reserved.