使用 EF Core 将对象存储在 json 列中

问题描述 投票:0回答:1

使用 EF Core 7 的新功能,我尝试在 json 列中存储

object
,但我总是得到一个空的 json 文档
{}

我的班级是:

 public class TaskActivity
 {

     public int Id { get; set; }
     public DateTime DateUtc { get; set; }
     public int Type { get; set; }
     public object Data { get; set; }

 }

OnModelCreating

modelBuilder.Entity<TaskActivity>()
    .OwnsOne(x => x.Data, builder => { builder.ToJson(); });

添加迁移,它会正确添加 MSSQL 表中的

Data
列:

Data = table.Column<string>(type: "nvarchar(max)", nullable: true)

当我为

Data
分配一个值,然后将新实体添加到表中时

record.Data = new {A=2, B=4};

我可以看到记录是如何真正添加的,但是

Data
包含一个空的json文档
{}

在 SQL 表中存储动态 json 的正确方法是什么?

 

c# entity-framework-core
1个回答
0
投票

它与对象及其属性名称有关。尽量定义对象类型,避免在对象属性中使用Id之类的名称,因为ef core可能会将其保存为空对象,所以尽量使用Id或{yourobjectname}Id或{theparentname}Id以外的名称作为对象的属性对象。

© www.soinside.com 2019 - 2024. All rights reserved.