用途:在 EF Core 中实现灵活的内容架构,用 JSON 列存储动态自定义字段,避免因架构变更频繁执行数据库迁移。适用于 CMS 内容类型的自定义字段存储、按实例变化的动态属性、JSON 数据的 LINQ 查询、JSON 列索引策略规划,以及从 EAV 迁移到 JSON 存储。
主要能力:提供三种模式——编译期已知的强类型自定义字段;完全动态的属性包(JsonDocument 或 Dictionary);推荐的混合方式,即固定列存常用可查询字段,JSON 列存类型专属与自定义字段。支持 LINQ 查询嵌套 JSON 属性、数组包含与排序,也可用原生 SQL(SQL Server JSON_VALUE、PostgreSQL jsonb 运算符)。索引方面可用计算列加索引,或 PostgreSQL GIN 索引,并可通过迁移添加计算列。架构演进时新增字段通常无需迁移,缺失或空属性用可空类型与默认值处理,必要时编写后台批处理迁移数据。还涉及序列化配置、自定义类型转换器、内容部件 JSON 存储与 FluentValidation 校验。
使用方式:定义实体与 Owned 类型,在 OnModelCreating 中调用 builder.ToJson() 配置 JSON 列;查询时直接对 JSON 属性写 LINQ,复杂查询用 FromSqlRaw;为高频查询路径建立索引。
限制与注意事项:高频过滤或排序、唯一约束字段应使用常规列,大型二进制数据、外键关系不建议放入 JSON;勿仅依赖 JSON 查询处理性能关键路径,避免过深嵌套,用户输入需做架构校验。官方文本未提供具体收费、价格与平台信息。