public ActionResult Edit([FromJson] IEnumerable <DependentViewModel> dependents, [FromJson] IEnumerable <DependentViewModel> removed, Employee Employee) { if (dependents != null || removed != null) { foreach (DependentViewModel dep in dependents) { if (!repository.FindDependents(Employee.Id).Any(d => d.Name == dep.Name && d.Age == dep.Age)) { repository.AddDependent(new Dependent() { EmployeeID = dep.EmployeeID, Name = dep.Name, Age = dep.Age, Relation = dep.Relation }); } } foreach (DependentViewModel dep in removed) { var deleteThis = repository.FindDependents(Employee.Id).First(d => d.Name == dep.Name && d.Age == dep.Age); //context.Entry(deleteThis).State = System.Data.EntityState.Deleted; repository.RemoveDependent(deleteThis); } repository.Save(); Employee employee = repository.FindById(Employee.Id); return(View(employee)); } else if (ModelState.IsValid) { repository.Update(Employee); repository.Save(); } return(RedirectToAction("Index")); }