/// <summary> /// Метод загрузки измененных данных в БД /// </summary> /// <param name="temp"></param> public static void UpdateBills(InclusionModel temp) { TestBankLocalDBEntities billToSql = new TestBankLocalDBEntities(); // Получение определенного счета var newBill = billToSql.Bills.Where(x => x.BillNum == temp.Bill).FirstOrDefault(); if (newBill != null) { // Тут пытался заполнить свойства рефлексией, но, ели я правильно понял, то работать это будет только для однотипных объектов. #region Попытка изменения свойств рефлексией //foreach (var t in temp.GetType().GetProperties()) //{ // t.SetValue(newBill, t.GetValue(temp)); //} #endregion // Изменение значений для отдельного счета в БД newBill.InclusionDateEnd = temp.DateEndInclusion; newBill.InclusionSum = temp.Inclusion; newBill.Percents = temp.Percents; newBill.Capitalize = temp.Capitalize; newBill.Total = Convert.ToInt32(temp.Sum); newBill.StatusInclusion = temp.StatusInclusion; } try { // Сохранение данных в БД billToSql.SaveChanges(); } catch (Exception ex) { MessageBox.Show(ex.Message); } #region Запрос на изменение данных в БД //SqlCommand sqlCommand = new SqlCommand($"UPDATE Bills SET InclusionDateEnd='{temp.DateEndInclusion}', " + // $"InclusionSum='{temp.Inclusion}', " + // $"Percents='{temp.Percents}', " + // $"Capitalize='{temp.Capitalize}', " + // $"Total='{Convert.ToInt32(temp.Sum)}', " + // $"StatusInclusion='{temp.StatusInclusion}' WHERE BillNum={temp.Bill}", ConnectionInfo.connection); //sqlCommand.ExecuteNonQuery(); #endregion }
/// <summary> /// Метод заполнения БД тестовыми клиентами /// </summary> private void FillDB() { Random random = new Random(); List <string> LastNames = new List <string>() { "Иванов", "Петров", "Сидоров", "Кузнецов", "Попов", "Бобров", "Лопатов", "Семенов", "Смирнов" }; List <string> Names = new List <string>() { "Иван", "Владимир", "Олег", "Сергей", "Виктор", "Андрей", "Ярослав", "Дмитрий", "Семен" }; List <string> Patronymics = new List <string>() { "Евгеньевич", "Андреевич", "Александрович", "Иванович", "Семенович", "Сергеевич", "Викторович", "Дмитриевич", "Геннадьевич" }; List <string> ClientStatus = new List <string>() { "Обычный", "VIP", "Корпоративный" }; TestBankLocalDBEntities clientsToSql = new TestBankLocalDBEntities(); for (int i = 0; i < 1000; i++) { try { #region Добавление записей в БД //// Добавление клиента в тестовую бд //sqlCommand = new SqlCommand($"INSERT INTO Clients (LastName, Name, Patronymic, ClientStatus, RegistrationDate)" + // $" VALUES (N'{LastNames[random.Next(0, 9)]}', N'{Names[random.Next(0, 9)]}', N'{Patronymics[random.Next(0, 9)]}', " + // $"N'{ClientStatus[random.Next(0, 3)]}', " + // $"'{DateTime.Now.AddDays(-random.Next(1, 32)).AddMonths(-random.Next(1, 37)).ToString("dd.MM.yyyy")}')", ConnectionInfo.connection); //sqlCommand.ExecuteNonQuery(); #endregion // Заполнение экземпляра класса для создания случайного клиента var clients = new Clients { LastName = LastNames[random.Next(0, 9)], Name = Names[random.Next(0, 9)], Patronymic = Patronymics[random.Next(0, 9)], ClientStatus = ClientStatus[random.Next(0, 3)], RegistrationDate = DateTime.Now.AddDays(-random.Next(1, 32)).AddMonths(-random.Next(1, 37)).ToString("dd.MM.yyyy") }; // Добавление данных для записи в БД clientsToSql.Clients.Add(clients); ProgressBarStatus = $"записей: {i}"; } catch (Exception ex) { MessageBox.Show(ex.Message); } } // Сохранение данных в БД clientsToSql.SaveChangesAsync(); ProgressBarStatus = $"Запись в БД завершена"; }
/// <summary> /// Метод выгрузки данных по клиентам и их счетов из БД /// </summary> Task <bool> AddLoadClientsToDB() { // Используйте метод FillDB() если нужно заполнить БД //FillDB(); TestBankLocalDBEntities takeClints = new TestBankLocalDBEntities(); try { //SqlDataReader reader; ProgressBarStatus = "Загрузка данных из бд. Ожидайте."; #region Запрос на получение клиентов //// Запрос на выгрузку данных из таблицы клиентов //sqlCommand = new SqlCommand($"SELECT * FROM Clients", ConnectionInfo.connection); //reader = sqlCommand.ExecuteReader(); //// Цикл загрузки данных клиентов //while (reader.Read()) //{ // Application.Current.Dispatcher.Invoke(() => AllClients.Add(new Client(reader.GetInt32(0), reader.GetString(1), // reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetString(5)))); //} //reader.Close(); #endregion // Получение данных из таблицы клиентов var tempCLients = takeClints.Clients; foreach (var t in tempCLients) { Application.Current.Dispatcher.Invoke(() => AllClients.Add(new Client (t.Id, t.LastName, t.Name, t.Patronymic, t.ClientStatus, t.RegistrationDate))); } #region Запрос на получение счетов //// Запрос на выгрузку данных из таблицы счетов //sqlCommand = new SqlCommand($"SELECT * FROM Bills", ConnectionInfo.connection); //reader = sqlCommand.ExecuteReader(); //// Цикл выгрузки данных по счетам клиентов //while (reader.Read()) //{ // Application.Current.Dispatcher.Invoke(() => allInclusions.Add(new InclusionModel(reader.GetInt32(1), reader.GetInt32(2), // reader.GetString(3), reader.GetString(4), reader.GetDouble(5), reader.GetDouble(6), reader.GetBoolean(7), reader.GetInt32(8), // reader.GetString(9)))); //} //reader.Close(); #endregion // Получение данных из таблицы счетов var tempBills = takeClints.Bills; foreach (var t in tempBills) { Application.Current.Dispatcher.Invoke(() => allInclusions.Add(new InclusionModel (t.ClientID, t.BillNum, t.InclusionDate, t.InclusionDateEnd, t.InclusionSum, t.Percents, t.Capitalize, t.Total, t.StatusInclusion))); } // Определение количества счетов для каждого клиента foreach (var t in AllClients) { t.Inclusions = new ObservableCollection <InclusionModel>(allInclusions.Where(x => x.ClientID == t.Id)); t.ColBills = t.Inclusions.Count; } ProgressBarStatus = $"Загрузка завершена."; return(Task.FromResult(true)); } catch (Exception ex) { MessageBox.Show(ex.Message); return(Task.FromResult(false)); } }