You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core 6 JSON列实现示例:将Employee类Address属性映射为JSON列

EF Core 6+ 将复杂属性映射为JSON列的配置方法

以下两种实现方式可按需选择:

方式1:Fluent API(支持EF Core 6.0及以上,通用推荐)

直接在你的自定义DbContext类的OnModelCreating方法中添加配置即可:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Employee>()
        // 标记Address为Employee的从属对象
        .OwnsOne(e => e.Address, builder =>
        {
            // 配置从属对象序列化为JSON存储
            builder.ToJson();
        });
}

方式2:特性注解(仅支持EF Core 7.0及以上)

直接在实体类上标记对应特性即可,无需修改DbContext配置:

// 标记Address为从属实体类
[Owned]
public class Address
{
    public string City { get; set; }
    public string Region { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
    public string Phone { get; set; }
}

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateOnly JoiningDate { get; set; }
    // 标记该属性映射为JSON列
    [JsonColumn]
    public Address Address { get; set; }
}

注意事项

  • 配置完成后执行迁移,生成的列类型会自动适配对应数据库的JSON类型(如PostgreSQL为jsonb、MySQL为json、SQL Server为带JSON逻辑标记的nvarchar(max))
  • 日常读写无需手动处理JSON序列化/反序列化,直接操作Address对象即可,EF Core会自动完成转换
  • 支持直接对JSON内部属性做查询,例如dbContext.Employees.Where(e => e.Address.City == "上海"),EF Core会自动生成对应数据库的JSON查询语法,性能和普通列查询基本一致

内容的提问来源于stack exchange,提问作者Faraz Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:36:08