首页 > 解决方案 > 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));
}

标签: c#entity-framework-core

解决方案


尝试将您的孩子添加到数据库然后保存它应该可以工作

[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));

}


推荐阅读