private void softwareBindingSource_PositionChanged(object sender, EventArgs e) { UI.Models.Software current = ((ObjectView <UI.Models.Software>)softwareBindingSource.Current).Object; /* Sql * select DB.* * from [DataBase] DB * inner join SoftwareDataBase SDB on SDB.IdDataBase = DB.Id * where IdSoftware = 1; */ /*Linq*/ var q = context.Databases.Join(inner: context.SoftwareDatabases, outerKeySelector: data => data.Id, innerKeySelector: softwareDatabase => softwareDatabase.IdDataBase, resultSelector: (data, softwareDatabase) => new { data, softwareDatabase }) .Where(predicate: t => t.softwareDatabase.IdSoftware == current.Id) .Select(selector: t => t.data).ToList(); /**/ var bindingListView = new BindingListView <DataBase>(list: q); dataBaseBindingSource.DataSource = bindingListView; dataGridView1.Refresh(); }
/// <summary> /// Use case: приложению больше не нужна данная база её нужно удалить /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void RemoveDatabaseFromSoftwareBtn_Click(object sender, EventArgs e) { UI.Models.Software software = ((ObjectView <UI.Models.Software>)softwareBindingSource.Current).Object; DataBase dataBase = ((ObjectView <DataBase>)dataBaseBindingSource.Current).Object; SoftwareDataBase firstOrDefaultAsync = await context.SoftwareDatabases.FirstOrDefaultAsync(predicate : it => it.IdDataBase == dataBase.Id && it.IdSoftware == software.Id); context.Remove(entity: firstOrDefaultAsync); await context.SaveChangesAsync(); await Binding(); SoftwareGridView.Refresh(); }
private async void AddSoftwareForUserBtn_Click(object sender, EventArgs e) { var idOc = ((ObjectView <OperatingSystem>)operatingSystemBindingSource.Current).Object.Id; try { //Проверки: не ввели значение для name, такое имя и операционная система уже существуют SoftwareNameTextBox.Validate("Ви не ввели назву додатку", out var name); UI.Models.Software nameExist = await _context.Softwares.SingleOrDefaultAsync(software => software.Name.Equals(name) && software.IdOperatingSystem == idOc); if (nameExist != null) { throw new DuplicateNameException("Програма з таким ім'ям вже існує"); } //Валидация прошла успешно //Создаём новое приложение, получаем пользователя, добавляем ему приложение, обновляем значение в бд и сохраняем var newSoftware = new UI.Models.Software { IdOperatingSystem = idOc, IdUser = _userId, Name = name }; await _context.Softwares.AddAsync(newSoftware); await _context.SaveChangesAsync(); //Возвращаемся на главную this.Nav(new Main()); } catch (FormatException formatException) { MessageBox.Show(formatException.Message, "Не коректні дані", MessageBoxButtons.OK, MessageBoxIcon.Warning); } catch (DuplicateNameException duplicateNameException) { MessageBox.Show(duplicateNameException.Message, "Не коректні дані", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }