private void btnGuardar_Click(object sender, EventArgs e) { if (MessageBox.Show("Confirmar Venta", "Confirmar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { filaSeleccionada = dgvVenta.CurrentRow; if (filaSeleccionada != null && dgvVenta.Rows.Count > 0) { //Guardar en venta if (venta == null) { //Transacion using (var db = new FARMATICSEntities1()) { //Iniciar Transaccion using (var Context = db.Database.BeginTransaction()) { try { //Crear objetos y pasar el contexto controllerTransac = new FarmaTicsController(db); //Escribiendo venta venta = new Venta { EmpleadoId = us.Id, ClienteId = cliente.Id, TotalDeVenta = decimal.Parse(lblTotal.Text), FechaDeVenta = DateTime.Now, }; controllerTransac.Agregar(venta); venta.NumeroDeVenta = venta.Id.ToString(); MessageBox.Show("Venta Guardada"); //Escrinbir detalle Venta foreach (DataGridViewRow item in dgvVenta.Rows) { DetalleVenta detalleVenta = new DetalleVenta { VentaId = venta.Id, ProductoId = int.Parse(item.Cells[0].Value.ToString()), Cantidad = int.Parse(item.Cells[3].Value.ToString()) }; controllerTransac.Agregar(detalleVenta); MessageBox.Show("Detalle Venta Guardado"); //Actualizar Stock var p = _controller.ObtenerProductoPorID(detalleVenta.ProductoId); p.Stock -= detalleVenta.Cantidad; //throw new Exception(); controllerTransac.Guardar(); MessageBox.Show($"Stock actualizado a: {p.Stock}"); } Context.Commit(); MessageBox.Show("Transaccion Terminada"); } catch (Exception ex) { Context.Rollback(); MessageBox.Show($"Transaccion Cancelada!!! {ex}"); } } } } else { } } else { MessageBox.Show("No hay ningun dato para Guardar"); } } else { MessageBox.Show("Venta Cancelada", "Cancelar", MessageBoxButtons.OK, MessageBoxIcon.Error); } }