首页 > 解决方案 > npgsql在asp net core中修改了jsonb列表

问题描述

我在使用 jsonb 格式存储的 postgres 中有一对多的关系。

  public class Category {
    public string Name { get;  set; }
    public bool IsLive { get; set; }
    [Column(TypeName = "jsonb")]
    public List<SubCategory> SubCategories { get;  set; }
}

public class SubCategory {
    public string Name { get;  set; }
}

我的模型还在 SaveChanges() 之前存储 CreatedAt 和 UpdatedAt

public void UpdateInformation(List<EntityEntry> entries)
        {
            var filtered = entries
                .Where(x => x.State == EntityState.Added
                    || x.State == EntityState.Deleted);

            foreach (var entry in filtered)
            {
                var data = entry.Members.ToList();
                
                switch (entry.State)
                {
                    case EntityState.Added:
                        //entry.CurrentValues["IsDeleted"] = false;
                        ((EntityAudit)entry.Entity).IsDeleted = false;
                        break;
                    case EntityState.Deleted:
                        entry.State = EntityState.Modified;
                        //entry.CurrentValues["IsDeleted"] = true;
                        ((EntityAudit)entry.Entity).IsDeleted = true;
                        break;
                }

                
            }
        }

它正确更新父信息,但无法更新嵌套的子类别数据

[
  {
    "Id": "00000000-0000-0000-0000-000000000000",
    "Name": "btcl-domain",
    "IsActive": true,
    "CreatedAt": "0001-01-01T00:00:00",
    "CreatedBy": 0,
    "IsDeleted": false,
    "UpdatedAt": "0001-01-01T00:00:00",
    "UpdatedBy": 0
  }
]

看到该列表对象无法正确插入 createdAt 和 updatedAt 列值,而且 Guid 值也不合适。

标签: postgresqlentity-frameworkasp.net-corenpgsql

解决方案


推荐阅读