private void UpdateProduct(Product product, ProductEditorModel model) { product.Name = model.Name; product.Brand = model.Brand == null ? null : _brandService.Find(model.Brand.Id); product.Categories.Clear(); foreach (var category in model.Categories) { product.Categories.Add(_categoryService.Find(category.Id)); } product.SetCustomFields(model.CustomFields); product.SetImages(model.Images); foreach (var variant in product.Variants.ToList()) { if (!model.Variants.Any(v => v.Id == variant.Id)) { product.Variants.Remove(variant); } } foreach (var variantModel in model.Variants) { ProductVariant variant; if (variantModel.Id > 0) { variant = product.Variants.FirstOrDefault(v => v.Id == variantModel.Id); } else { variant = new ProductVariant(); product.Variants.Add(variant); } variant.Sku = variantModel.Sku; variant.Price = variantModel.Price; variant.SetVariantFields(variantModel.VariantFields); } }