You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ASP.NET Core POST接口创建EF Core一对多关联数据

问题根因
  1. JSON反序列化绑定失败:Form类的FormFields属性仅设置了get访问器,属于只读属性。ASP.NET Core默认的JSON序列化器不会向只读集合属性中填充请求传入的元素,导致你拿到的item参数中FormFields集合始终为空。
  2. 实体关联关系缺失:Form和FormField的一对多关联没有显式配置外键,即便绑定成功,EF Core也无法识别关联关系,不会自动级联保存FormField数据。
修复步骤
  • 第一步:修改Form类的FormFields属性,添加set访问器,允许反序列化器为属性赋值:
public class Form
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    public string Name { get; set; }

    // 新增set访问器
    public List<FormField> FormFields { get; set; } = new List<FormField>();
}
  • 第二步:补全FormField类的外键配置,建立完整的一对多关联:
public class FormField
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    // 新增关联Form的外键字段
    public long FormId { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }
    // 可选:新增反向导航属性,便于EF Core自动识别关系
    public Form Form { get; set; }
}
  • 第三步:无需修改原有控制器逻辑,EF Core默认开启级联保存,调用SaveChanges时会自动插入关联的FormField记录,且自动填充FormId外键值。

修改完成后你原本的POST请求格式不需要调整,直接调用接口即可同时创建Form和关联的所有FormField数据。

内容的提问来源于stack exchange,提问作者PascalTurbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:06:03