我有這個簡單的模型:
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只包含 Form.Name 但 FormFields 是空的。
如何通過 API 創建多個 FormField?
uj5u.com熱心網友回復:
如果我理解正確,Form.FormFields無論輸入是什么,總是空串列。如果是這種情況,其背后的原因是FormFields沒有設定器并且無法設定。嘗試添加set;的FormFields(不是100%肯定,但private set;應該是足夠了)
uj5u.com熱心網友回復:
好的 - 為了理解有關系:
一個表單有多個表單域
有正確配置的關系嗎?
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 中插入模型
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327282.html
標籤:。网 实体框架 asp.net核心 .net-5 asp.net5
下一篇:WPFDataGrid記憶體泄漏
