public static void Execute(MyBoardsContext context, int cardId, string[] strNewResponsiblesIds) { var newResponsiblesId = ArrayStringToInt.Execute(strNewResponsiblesIds); var card = context.Cards .Include("CardResponsibles") .Single(c => c.Id == cardId); // Delete relations foreach (var cardResponsible in card.CardResponsibles) { var index = Array.IndexOf(newResponsiblesId, cardResponsible.ResponsibleId); if (index == -1) { var crdRsponsbl = new CardResponsible { CardId = card.Id, ResponsibleId = cardResponsible.ResponsibleId }; card.CardResponsibles.Remove(crdRsponsbl); } } // Add relations foreach (var newResponsibleId in newResponsiblesId) { if (!card.CardResponsibles.Any(ct => ct.ResponsibleId == newResponsibleId)) { var newCardResponsible = new CardResponsible { ResponsibleId = newResponsibleId, CardId = card.Id }; card.CardResponsibles.Add(newCardResponsible); } } }
public static void Execute(Card card, MyBoardsContext context) { CardResponsible cardResponsible; foreach (var item in card.SelectedResponsibles) { if (Int32.TryParse(item, out int id)) { cardResponsible = new CardResponsible() { ResponsibleId = id, CardId = card.Id }; context.Add(cardResponsible); context.SaveChangesAsync(); } } }