实体框架核心jsonb列类型

时间:2017-03-29 09:05:58

标签: c# postgresql entity-framework-core npgsql

我正在使用Entity Framework Core和npgsql postgresql来实现Entity Framework Core。

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

例如:

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

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

提前致谢。

2 个答案:

答案 0 :(得分:10)

基于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!

答案 1 :(得分:2)

按照@bruno.almeida 的建议使用 string 是一个不错的解决方案,但无法查询

使用其他方法:

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

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

public JsonDocument Customer { get; set; }

更多详情,请访问:https://www.npgsql.org/efcore/mapping/json.html