c# - EF Core 和 ASP.NET 未将子对象插入数组
问题描述
我来自 EF 6,将子对象插入父实体的列表看起来像这样:
[HttpPost, Route("{id:int}")]
public async Task<IActionResult> Post(int id, MenuViewModel menu){
if (!ModelState.IsValid)
return BadRequest("Something is wrong with the model");
var restaurant = await db.Restaurants.Where(r => r.Id == id).Include(r=> r.Menus).FirstOrDefaultAsync();
if (restaurant == null)
return BadRequest("That restaurant does not exist");
var menuModel = Mapper.Map<Menu>(menu);
restaurant.Menus.Add(menuModel);
db.Restaurants.Update(restaurant);
await db.SaveChangesAsync();
return Ok(Mapper.Map<MenuViewModel>(menuModel));
}
解决方案
尝试将您的孩子添加到数据库然后保存它应该可以工作
[HttpPost, Route("{id:int}")]
public async Task<IActionResult> Post(int id, MenuViewModel menu){
if (!ModelState.IsValid)
return BadRequest("Something is wrong with the model");
var restaurant = await db.Restaurants.Where(r => r.Id == id).Include(r=> r.Menus).FirstOrDefaultAsync();
if (restaurant == null)
return BadRequest("That restaurant does not exist");
var menuModel = Mapper.Map<Menu>(menu);
restaurant.Menus.Add(menuModel);
db.Menus.Add(menuModel); //Add to DBContext
db.Restaurants.Update(restaurant);
await db.SaveChangesAsync();
return Ok(Mapper.Map<MenuViewModel>(menuModel));
}
推荐阅读
- sql - 如果在 sql server 2008 R2 中的外键冲突,插入新记录并跳过
- linux - 通过管道将输入传递给 systemctl 命令
- php - 比较数组多维 PHP
- jquery - 在我的情况下,如何使用 jquery 获取指定的选择器?
- office-js - 共享点中保存的 Office 365 word 文档的 Retrivig ID
- php - Month number to month name in php
- reactjs - AWS GraphQL:变量“输入”已强制非空类型“输入!”的空值
- sql-server - equivalent of Postgres WITH RECURSIVE in Microsoft MSSQL?
- python - Update dict's value without too many copies of items
- c# - 试图将 '' 转换为 "" 格式