/// <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();
            }
        }