public override async Task ExecuteAsync(object parameter) { try { Dictionary <DateTime, SecurityPriceStore> dbPrices = _priceService.GetSecurityPrices(_sysSecurityPricesVM.SelectedSecurity.Symbol, _sysSecurityPricesVM.SelectedSecurity.AssetClass.Name) .ToDictionary(g => g.Date); int secId = _sysSecurityPricesVM.SelectedSecurity.SecurityId; List <SecurityPriceStore> pricesToUpdate = new List <SecurityPriceStore>(); List <SecurityPriceStore> newPrices = new List <SecurityPriceStore>(); foreach (PriceContainer priceContainer in _sysSecurityPricesVM.dgSecurityPrices) { if (dbPrices.ContainsKey(priceContainer.Date)) { if (dbPrices[priceContainer.Date].ClosePrice != priceContainer.ClosePrice) { dbPrices[priceContainer.Date].ClosePrice = priceContainer.ClosePrice; dbPrices[priceContainer.Date].PriceSource = "Manual"; pricesToUpdate.Add(dbPrices[priceContainer.Date]); } } else { SecurityPriceStore newManualPrice = new SecurityPriceStore { Date = priceContainer.Date, ClosePrice = priceContainer.ClosePrice, PriceSource = "Manual", SecurityId = secId }; newPrices.Add(newManualPrice); } } await _priceService.AddManualPrices(newPrices); await _priceService.UpdateManualPrices(pricesToUpdate); MessageBox.Show($"{newPrices.Count} prices inserted.\n{pricesToUpdate.Count} prices updated.", "Information"); await _sysSecurityPricesVM.Load(); } catch (Exception e) { MessageBox.Show(e.Message); } }