public async Task <IActionResult> OnGetDelete(int?id) { if (id == null) { return(NotFound("Person not found")); } _db.Remove(DisplayedPeople.FirstOrDefault(person => person.Id == id)); await _db.SaveChangesAsync(); return(Page()); }
public async Task <ActionResult <Person> > Update(Person updatedPerson) { //Поиск существующего пользователя. Person person = await db.Persons.FindAsync(updatedPerson.Id); //Обновление всех данных кроме навыков. db.Entry(person).CurrentValues.SetValues(updatedPerson); //Навыки работника. var personSkills = person.Skills.ToList(); foreach (var personSkill in personSkills) { //Ищем навыки которые были до изменений и остались после изменений. var skill = updatedPerson.Skills.SingleOrDefault(s => s.Name == personSkill.Name); if (skill != null) { //Обновляем поле у навыка сотрудника. db.Entry(personSkill).CurrentValues.SetValues(skill); } else { //Удаляем, если навыка нет. db.Remove(personSkill); } } //Добавляем новые навыки. foreach (var skill in updatedPerson.Skills) { if (personSkills.All(s => s.Name != skill.Name)) { person.Skills.Add(skill); } } await db.SaveChangesAsync(); return(person); }