/// <summary> /// Загружает данные из бд и отображает процесс загрузки в progrss bar /// </summary> /// <param name="step">Шаг progrss bar</param> /// <returns></returns> private async Task LoadDataFromDBandProgressBarStep(int step) { await Task.Run(() => { using (SimpleLibDBEntities database = new SimpleLibDBEntities()) { int count = 0; var qw = from item in database.BooksSet select item; foreach (var item in qw) { count++; //раскоментировать, чтобы лучше увидеть эффект заполнения //Thread.Sleep(1); LibraryViewModel.Books.Add(new BooksViewModel { Book = item }); //Для работы прогресс бара. if (count == step) { Application.Current.Dispatcher.BeginInvoke( DispatcherPriority.Normal, new Action(() => { LoadLibraryProgressBar.Value++; })); count = 0; } } } }); }
/// <summary> /// Удаляет книгу из БД /// </summary> /// <param name="bookVM">Удаляемая книга</param> private static void DeleteBookDB(BooksSet book) { using (SimpleLibDBEntities context = new SimpleLibDBEntities()) { BooksSet bookToDelete = context.BooksSet.First(b => b.Id == book.Id); context.BooksSet.Remove(bookToDelete); context.SaveChanges(); } }
async private void MainContext_Loaded(object sender, RoutedEventArgs e) { //общий размер коллекции int totalsize = 0; int step = 0; //Определяем шаг, чтобы корректно заполнять прогресс бар(от 0 до 100) using (SimpleLibDBEntities database = new SimpleLibDBEntities()) { totalsize = database.BooksSet.Count(); step = totalsize/100; } LoadLibraryProgressBar.Visibility = Visibility.Visible; //запускаем асинхронно задачу await LoadDataFromDBandProgressBarStep(step); MessageBox.Show("Данные были успешно загружены. \r\n Всего записей: "+totalsize); LoadLibraryProgressBar.Visibility = Visibility.Hidden; }
/// <summary> /// Сохраняет заданную книгу в нашей базе данных /// </summary> /// <param name="newBook">Сохраняемая книга</param> private static void AddBookDB(BooksSet newBook) { using (SimpleLibDBEntities context = new SimpleLibDBEntities()) { //newBook.Id = context.BooksSet.Count(); context.BooksSet.Add(newBook); context.SaveChanges(); } //return newBook; }
/// <summary> /// Обновняет информацию по существущей книге в нашей БД /// </summary> /// <param name="newBook">Книга с новыми данными(но старым id)</param> private static void UpdateDB(BooksSet newBook) { using (SimpleLibDBEntities context = new SimpleLibDBEntities()) { //Получаем объект и напрямую меняем его св-ва(т.к. он ссылочный и изменения напрямую отразятся в бд) BooksSet bookToEdit = context.BooksSet.First(b => b.Id == newBook.Id); bookToEdit.Title = newBook.Title; bookToEdit.Publisher = newBook.Publisher; bookToEdit.Author = newBook.Author; bookToEdit.Year = newBook.Year; bookToEdit.Note = newBook.Note; context.SaveChanges(); } }