From b05ca974f1eadada2f34c705c04e35acc45fde67 Mon Sep 17 00:00:00 2001 From: Yourdax Date: Tue, 27 Aug 2024 04:24:13 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=20=D0=B6=D0=B5=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BC=D1=8B=D0=B5=20=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=83=20=D0=BD=D0=B0=D0=BF=D0=B8=D1=82=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DrinkStorage.cs | 5 +-- .../Models/Drink.cs | 31 ++++++++++--------- 2 files changed, 20 insertions(+), 16 deletions(-) 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; } }