实体框架核心jsonb列类型

bru*_*ida 13 c# postgresql npgsql entity-framework-core

我正在使用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; }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Nei*_*eil 25

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

其他方法是使用:

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

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

public JsonDocument Customer { get; set; }
Run Code Online (Sandbox Code Playgroud)

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


bru*_*ida 17

基于H. Herzl评论:

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

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

    [Column(TypeName = "jsonb")]
    public string Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

迁移产生了这个:

Data = table.Column<string>(type: "jsonb", nullable: true),
Run Code Online (Sandbox Code Playgroud)

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

谢谢H. Herzl!

  • @wegry,这是链接 - https://www.npgsql.org/efcore/mapping/general.html#explicitly-specifying-data-types (3认同)