private void UpdateMemberCallings(string[] selectedCallings, Member memberToUpdate) { if (selectedCallings == null) { memberToUpdate.Calling_Members = new List <Calling_Member>(); return; } var selectedCallingsHS = new HashSet <string>(selectedCallings); var memberCallings = new HashSet <int>(memberToUpdate.Calling_Members.Select(c => c.Calling.CallingId)); foreach (var calling in _context.Callings) { if (selectedCallingsHS.Contains(calling.CallingId.ToString())) { if (!memberCallings.Contains(calling.CallingId)) { memberToUpdate.Calling_Members.Add(new Calling_Member { MemberId = memberToUpdate.MemberId, CallingId = calling.CallingId }); } } else { if (memberCallings.Contains(calling.CallingId)) { Calling_Member callingToRemove = memberToUpdate.Calling_Members.FirstOrDefault(i => i.CallingId == calling.CallingId); _context.Remove(callingToRemove); } } } }
public async Task <IActionResult> Create([Bind("MemberId,MemberFull,Birth")] Member member, int[] selectedCallings) { if (selectedCallings.Length > 0) { member.Calling_Members = new List <Calling_Member>(); foreach (var calling in selectedCallings) { var callingToAdd = new Calling_Member { MemberId = member.MemberId, CallingId = calling }; member.Calling_Members.Add(callingToAdd); } } if (ModelState.IsValid) { _context.Add(member); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } PopulateAssignedCallingData(member); return(View(member)); }