如何在EF Core 7中用OwnsOne/OwnsMany将字符串数组以JSON存储到列?
解决方案
问题根源
你误用了OwnsMany来处理List<string>类型的Tags属性。OwnsMany是EF Core专门用于映射实体类型集合的API,而string属于值类型而非实体,EF Core无法将其识别为可被拥有的实体,因此抛出构造函数绑定失败的错误。
正确配置代码
直接针对Tags属性调用ToJson(),就能实现将列表序列化为JSON数组存储的需求:
builder.Property(x => x.Tags) .ToJson(); // 把List<string>序列化为JSON数组格式存储 builder.Property(x => x.Name).HasMaxLength(450);
实现效果
配置生效后,Tags属性会被序列化为你期望的JSON数组形式,数据库中对应字段将存储类似["tag#1", "tag2"]的内容,完全匹配你想要的表格展示效果。
内容的提问来源于stack exchange,提问作者Nima Ghomri
相关产品推荐
相关产品推荐

