簡體   English   中英

通過asp.net core POST創建EF Core一對多關系數據

[英]Create EF Core One-To-Many Relationship data through asp.net core POST

我有這個簡單的模型:

public class Form
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    public string Name { get; set; }

    public List<FormField> FormFields { get; } = new List<FormField>();
}
public class FormField
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    public string Name { get; set; }
    public string Value { get; set; }
}

和一個控制器方法:

public IActionResult Post([FromBody] Form item)
{
    EntityEntry<Form> entityEntry = Context.Add(item);
    ModuleContext.Database.SaveChanges();
    return Ok(entityEntry.Entity);
}

當我現在發布類似的內容時:

{
  "Name": "Test Name",
  "FormFields": [
    {
      "Name": "Field Name",
      "Value": "Field Value"
    }
  ]
}

只設置了表單的Name ,但沒有創建新的表單字段。 甚至FromBody返回的“項目” FromBody只包含 Form.Name 但 FormFields 是空的。

如何通過 API 創建多個 FormField?

好的 - 為了理解有關系:

一個表單有多個表單域


有正確配置的關系嗎?

modelBuilder.Entity< Form >()
    .HasMany(c => c.FormFields)
    .WithOne(e => e.Form);

如果此 json 未正確將元素添加到數據庫:

{
  "Name": "Test Name",
  "FormFields": [
    {
      "Name": "Field Name",
      "Value": "Field Value"
    }
  ]
}

然后有一個單獨添加 FormFields 和 Name 的選項:

EntityEntry<Form> entityEntry = Context.Add(item);

foreach(field in item.FormFields){
   EntityEntry<FormFields> entityEntry = Context.Add(field);
}

ModuleContext.Database.SaveChanges();
return Ok(entityEntry.Entity);

也參考多對多:

如何在具有多對多關系的 ef 6 中插入模型

如果我理解正確Form.FormFields總是空列表,無論輸入是什么。 如果是這種情況,其背后的原因是FormFields沒有 setter 並且無法設置。 嘗試添加set; 用於FormFields (不是 100% 確定,而是private set;應該足夠了)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM