예제 #1
0
        public Menu Update(Menu menu, List <int> gerechten)
        {
            // Attach -> menu item must be known to the context so it can
            // check whether stuff has changed in it.
            ctx.Attach(menu);
            // Load the old set of gerechten for this menu
            ctx.Entry(menu).Collection(p => p.Bevat).Load();
            var gerechtenInMenu = menu.Bevat.Select(i => i.GerechtId);

            foreach (var gerecht in ctx.Gerechten)
            {
                if (gerechten.Contains(gerecht.Id))
                {
                    if (!gerechtenInMenu.Contains(gerecht.Id))
                    {
                        menu.Bevat.Add(new MenuGerecht {
                            GerechtId = gerecht.Id, MenuId = menu.Id
                        });
                    }
                }
                else
                if (gerechtenInMenu.Contains(gerecht.Id))
                {
                    var itemToRemove = menu.Bevat.FirstOrDefault(m => m.GerechtId == gerecht.Id);
                    ctx.Remove(itemToRemove);
                }
            }
            ctx.Menus.Update(menu);
            ctx.SaveChanges();
            return(menu);
        }