EF Core и ASP.NET не вставляют дочерний объект в массив - PullRequest
0 голосов
/ 25 апреля 2018

Я пришел из 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));
}

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте добавить своего ребенка в БД, затем сохраните его, должно быть, работает

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...