Entity Framework核心jsonb列类型

Entity Framework Core jsonb column type

我正在使用 Entity Framework Core 和 npgsql postgresql for Entity Framework Core。

我的问题是,使用迁移,如何标记 class 属性 以生成 JSONB 列类型?

例如:

public class MyTableClass
{
    public int Id { get; set; }

    // My JSONB column
    public string Data { get; set; }
}

提前致谢。

基于 H. Herzl 评论:

我最终的解决方案是这样的:

public class MyTableClass
{
    public int Id { get; set; }

    [Column(TypeName = "jsonb")]
    public string Data { get; set; }
}

迁移生成了这个:

Data = table.Column<string>(type: "jsonb", nullable: true),

使用迁移更新数据库时,已使用 jsonb 类型正确创建数据列。

谢谢 H. Herzl!

使用@bruno.almeida建议的string是一个很好的解决方案,但无法查询

其他方法是使用:

  • 作为 System.Text.Json DOM 类型(JsonDocument 或 JsonElement)
  • 作为强类型的用户定义类型 (POCO)

JsonDocument 是我的最爱,因为它可以查询,设置灵活且快速,例如:

public JsonDocument Customer { get; set; }

更多详细信息:https://www.npgsql.org/efcore/mapping/json.html