private void btnAdd_Click(object sender, EventArgs e) { var dbContext = AppVariables.getDbContext(); // создание нового экземпляра сущности var customer = (CUSTOMER)bindingSource.AddNew(); // создаём форму для редактирования using (CustomerEditorForm editor = new CustomerEditorForm()) { editor.Text = "Add customer"; editor.Customer = customer; // Обработчик закрытия формы editor.FormClosing += delegate(object fSender, FormClosingEventArgs fe) { if (editor.DialogResult == DialogResult.OK) { try { // получаем новое значение генератора // и присваиваем его идентификатору customer.CUSTOMER_ID = dbContext.NextValueFor("GEN_CUSTOMER_ID"); // добавляем нового заказчика dbContext.CUSTOMERS.Add(customer); // пытаемся сохранить изменения dbContext.SaveChanges(); // и обновить текущую запись dbContext.Refresh(RefreshMode.StoreWins, customer); } catch (Exception ex) { // отображаем ошибку MessageBox.Show(ex.Message, "Error"); // не закрываем форму для возможности исправления ошибки fe.Cancel = true; } } else { bindingSource.CancelEdit(); } }; // показываем модальную форму editor.ShowDialog(this); } }
private void btnEdit_Click(object sender, EventArgs e) { var dbContext = AppVariables.getDbContext(); // получаем сущность var customer = (CUSTOMER)bindingSource.Current; // создаём форму для редактирования using (CustomerEditorForm editor = new CustomerEditorForm()) { editor.Text = "Edit customer"; editor.Customer = customer; // Обработчик закрытия формы editor.FormClosing += delegate(object fSender, FormClosingEventArgs fe) { if (editor.DialogResult == DialogResult.OK) { try { // пытаемся сохранить изменения dbContext.SaveChanges(); dbContext.Refresh(RefreshMode.StoreWins, customer); // обновляем все связанные контролы bindingSource.ResetCurrentItem(); } catch (Exception ex) { // отображаем ошибку MessageBox.Show(ex.Message, "Error"); // не закрываем форму для возможности исправления ошибки fe.Cancel = true; } } else { bindingSource.CancelEdit(); } }; // показываем модальную форму editor.ShowDialog(this); } }