public void Load(object state) { // Загрузка данных с сервера WebRequest request = WebRequest.Create(CB_REQUEST_URL); HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { response = (HttpWebResponse)e.Response; } if (response.StatusCode != HttpStatusCode.OK) { // Здесь может быть вывод в лог или оповещение об ошибке... return; } // Чтение данных Stream stream = response.GetResponseStream(); StreamReader sr = new StreamReader(stream, Encoding.GetEncoding(response.CharacterSet)); string readData = sr.ReadToEnd(); JToken valute = JObject.Parse(readData)["Valute"]; Currency[] currencies = valute.ToObject <Dictionary <string, Currency> >().Values.ToArray(); // Добавление и обновление данных using (DbCurrencyContext context = new DbCurrencyContext()) { foreach (Currency cur in currencies) { if (context.Currencies.Any(e => e.ID == cur.ID)) { context.Entry(cur).State = EntityState.Modified; } else { context.Entry(cur).State = EntityState.Added; } } context.SaveChanges(); } }
public CurrenciesResponse Get(int page = 1) { using DbCurrencyContext db = new DbCurrencyContext(); // количество записей на странице int pageSize = 5; IQueryable <Currency> src = db.Currencies; int cnt = src.Count(); // всего записей в таблице int pageCnt = cnt / pageSize; // всего страниц if (cnt % pageSize != 0) { pageCnt++; } return(new CurrenciesResponse() { Count = cnt, Pages = pageCnt, CurrentPage = page, Valute = src.Skip((page - 1) * pageSize).Take(pageSize).ToList() }); }
public Currency GetById(string id = "R01235") { using DbCurrencyContext db = new DbCurrencyContext(); return(db.Currencies.Find(id)); }