public static void ImportFromBorsaItaliana(string startFrom) { List <string> tickers = getTickers(startFrom); int index = 0; var borsaItalianaService = new BorsaItalianaService(); foreach (var ticker in tickers) { var quote = borsaItalianaService.GetDailyQuotesLastThreeMonths(ticker); quote = GetEndOfMonthQuotes(quote); if (quote.Any()) { using (var context = new TradingContext()) { var quoteEsistenti = context.Quote.Where(q => q.Ticker == ticker).ToList(); foreach (var quota in quote) { var quotaEsistente = quoteEsistenti.SingleOrDefault(q => q.Data.ToString("MMyyyy") == quota.Data.ToString("MMyyyy")); if (quotaEsistente == null) { context.Quote.Add(quota); } else if (quotaEsistente.Chiusura != quota.Chiusura || quotaEsistente.Volumi != quota.Volumi) { context.Update(quotaEsistente); quotaEsistente.Chiusura = quota.Chiusura; quotaEsistente.Volumi = quota.Volumi; } } var records = context.SaveChanges(); Console.WriteLine($"{++index} {ticker}: {records} record(s) affected"); } } else { Console.WriteLine($"{++index} {ticker}: ERROR no data returned from web service"); } } using (var context = new TradingContext()) { var etfService = new EtfService(null, new EtfRepository(context)); var counter = etfService.AggiornaQuoteMeseSuccessivo(); Console.WriteLine($"Quote mese successivo: {counter} record(s) affected"); var portfolioService = new PortfolioService(borsaItalianaService, null, null, new PortfolioRepository(context)); counter = portfolioService.AggiornaQuotePortfolio(); Console.WriteLine($"Quote portafoglio: {counter} record(s) affected"); } Console.WriteLine("Done!"); }