【发布时间】:2019-07-17 21:37:00
【问题描述】:
我有以下控制器,它应该在数据库中创建一个新对象:
[HttpPost]
public ActionResult<Panels> CreateNewPanel(Panels panel)
{
_context.Panels.Add(panel);
_context.SaveChanges();
return CreatedAtAction(nameof(GetPanelById), new { id = panel.ID }, panel);
}
它正在接收一些JSON数据,例如:
{
"desc": "test5",
"frame": 2,
"aC240v": false
}
映射到以下模型:
public class Panels
{
public int ID { get; set; }
public string Desc { get; set; }
public PanelFrames Frame { get; set; }
public bool AC240v { get; set; }
}
如果没有设置“frame”,它在大多数情况下都可以工作,但如果它设置为像上面的代码一样的整数,它会失败,因为它是 PanelFrames 类型而不是整数。
PanelFrames 是另一种与 Panels 具有一对多关系的模型,每个 Panel 只能有一个 PanelFrame,因此在数据库中它被记录为简单的整数,即 PanelFrames ID。
如何协调这一点,以便整数(即 PanelFrame ID)通过 API 传递并记录在数据库中。 MS 文档似乎没有涵盖这一点,尽管这似乎很常见,所以我一定没有理解某些东西,或者做错了什么。
【问题讨论】:
-
将 DAO 用作请求模型是一种不好的方法。使用 DTO 并将其映射到您的模型
-
如果框架是另一个对象,你需要
"frame" : { "Id": 2 }。这可能会导致问题。
标签: asp.net-core asp.net-web-api