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