public bool UpdateEmployeeProjects(EmployeeProjectViewModel employeeProjectViewModel) { try { Employee emp = _mgmtContext.Employee.Where(e => e._EmpId == employeeProjectViewModel.Id).Include(e => e.EmployeeProjects).ThenInclude(e => e.Project).ToList()[0]; // if employee project is empty then add the selected project in EmployeePoject table if (emp.EmployeeProjects.Count() == 0) { foreach (var pjt in employeeProjectViewModel.Projects) { if (pjt.isProjectSelected) { _mgmtContext.AddRange(new EmployeeProject { employee = emp, Project = _mgmtContext.Project.FirstOrDefault(p => p._PjtId == pjt._PjtId) }); } } } else// when employee projects are in EmployeeProject table { foreach (var pjt in employeeProjectViewModel.Projects) { var empPjt = emp.EmployeeProjects.FirstOrDefault(ep => ep._PjtId == pjt._PjtId); if (pjt.isProjectSelected && empPjt == null) { //project is selected and is not in the table so adding it to the database table emp.EmployeeProjects.Add( new EmployeeProject { employee = emp, _PjtId = pjt._PjtId, Project = _mgmtContext.Project.FirstOrDefault(p => p._PjtId == pjt._PjtId) } ); } else if (!pjt.isProjectSelected && empPjt != null) { // project is not selected but it is in the database table so,removing it emp.EmployeeProjects.Remove(empPjt); } else if (pjt.isProjectSelected && empPjt != null) { //here do nothing as employee project is already in database table } } } _mgmtContext.SaveChanges(); return(true); } catch (Exception ex) { Debug.WriteLine("Message " + ex.Message); return(false); } }