diff --git a/DiningRoom/DiningRoomDatabaseImplement/Implements/DrinkStorage.cs b/DiningRoom/DiningRoomDatabaseImplement/Implements/DrinkStorage.cs index 0f19edf..e12760f 100644 --- a/DiningRoom/DiningRoomDatabaseImplement/Implements/DrinkStorage.cs +++ b/DiningRoom/DiningRoomDatabaseImplement/Implements/DrinkStorage.cs @@ -74,9 +74,10 @@ namespace DiningRoomDatabaseImplement.Implements { return null; } - Drink.Update(model); + Drink.UpdateComponents(context, model); + context.SaveChanges(); + Drink.Update(model); context.SaveChanges(); - Drink.UpdateComponents(context, model); transaction.Commit(); return Drink.GetViewModel; } diff --git a/DiningRoom/DiningRoomDatabaseImplement/Models/Drink.cs b/DiningRoom/DiningRoomDatabaseImplement/Models/Drink.cs index 7ed5e76..0a67cf8 100644 --- a/DiningRoom/DiningRoomDatabaseImplement/Models/Drink.cs +++ b/DiningRoom/DiningRoomDatabaseImplement/Models/Drink.cs @@ -85,29 +85,32 @@ public class Drink : IDrinkModel public void UpdateComponents(DiningRoomDatabase context, DrinkBindingModel model) { var drinkComponents = context.DrinkComponents.Where(rec => rec.DrinkId == model.Id).ToList(); + + // Удаляем все текущие записи if (drinkComponents != null && drinkComponents.Count > 0) - { // удалили те, которых нет в модели - context.DrinkComponents.RemoveRange(drinkComponents.Where(rec => !model.DrinkComponents.ContainsKey(rec.ComponentId))); - context.SaveChanges(); - // обновили количество у существующих записей - foreach (var updateComponent in drinkComponents) - { - updateComponent.Count = model.DrinkComponents[updateComponent.ComponentId].Item2; - model.DrinkComponents.Remove(updateComponent.ComponentId); - } + { + context.DrinkComponents.RemoveRange(drinkComponents); context.SaveChanges(); } - var drink = context.Drinks.First(x => x.Id == Id); - foreach (var pc in model.DrinkComponents) + + // Получаем продукт по его Id + var drink = context.Drinks.First(x => x.Id == model.Id); + + // Добавляем новые записи ProductComponents из модели + foreach (var dc in model.DrinkComponents) { context.DrinkComponents.Add(new DrinkComponent { Drink = drink, - Component = context.Components.First(x => x.Id == pc.Key), - Count = pc.Value.Item2 + Component = context.Components.First(x => x.Id == dc.Key), + Count = dc.Value.Item2 }); - context.SaveChanges(); } + + // Сохраняем изменения + context.SaveChanges(); + + // Сбрасываем кэш связанных компонентов, если требуется _drinkComponents = null; } }