postgresql - 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 值也不合适。
解决方案
推荐阅读
- linux - 恢复 bash 脚本
- python - 使用 Pandas 将两个单独行中的值合并为一行
- r - 如果元素是R中的特定值,如何替换列中的每个第n个元素
- centos - SELinux - 需要帮助来创建策略模块以仅允许对 /home/webserver 目录进行读取访问
- webpack - 我最近安装了 webpack 和 webpack-dev-server 并在 localhost 上运行它时出现此错误
- webpack - 在 Vue-cli 项目中应用 eslint-loader 选项,以便尊重 eslint 配置
- wifi - 如何监听来自桥接接口的 DHCP 请求?
- java - n 项之和.. 122333=14
- c# - Linq选择实体属性值与另一个列表中任何项目的属性值匹配的位置
- jquery - 插入按钮后按钮单击功能将不起作用