private void Guardar() { SISTMEDEntities P = new SISTMEDEntities(); using (var dbContextTransaction = P.Database.BeginTransaction()) try { P.Configuration.ValidateOnSaveEnabled = false; PRO_PHPV2 _itemPHP = new PRO_PHPV2(); _itemPHP.tamanio_frasco = ObtieneTamanioFrasco(); _itemPHP.bic = checkBic.Checked; _itemPHP.gotas_minuto = Convert.ToInt32(cboGotaHora.SelectedValue); _itemPHP.ml_hora = txtMlHora.Text == ""? 0: Convert.ToInt32(txtMlHora.Text); _itemPHP.fecha_carga = DateTime.Now; _itemPHP.usr_carga = Clases.Usuario.UsuarioLogeado.id_usuario_Logeado; _itemPHP.obs = txtObs.Text; if (_suspender == 1) { _itemPHP.fecha_baja = _fbja; } _itemPHP.frasco1 = Convert.ToInt32(cboDiluyente.SelectedValue); _itemPHP.frasco2 = Convert.ToInt32(cboDiluyente2.SelectedValue); _itemPHP.frasco3 = Convert.ToInt32(cboDiluyente3.SelectedValue); _itemPHP.frasco4 = Convert.ToInt32(cboDiluyente4.SelectedValue); _itemPHP.frasco5 = Convert.ToInt32(cboDiluyente5.SelectedValue); _itemPHP.frasco6 = Convert.ToInt32(cboDiluyente6.SelectedValue); _itemPHP.frasco7 = Convert.ToInt32(cboDiluyente7.SelectedValue); _itemPHP.frasco8 = Convert.ToInt32(cboDiluyente8.SelectedValue); _itemPHP.frasco9 = Convert.ToInt32(cboDiluyente9.SelectedValue); _itemPHP.frasco10 = Convert.ToInt32(cboDiluyente10.SelectedValue); if (suministro_procedimiento_id != 0) { _itemPHP.id_php = _phpID; P.Entry(_itemPHP).State = System.Data.Entity.EntityState.Modified; } else { P.PRO_PHPV2.Add(_itemPHP); } if (suministro_procedimiento_id != 0) { P.PRO_PHPV2_ADITIVO.RemoveRange(P.PRO_PHPV2_ADITIVO.Where(a => a.id_php == _phpID)); } foreach (Control c in groupBoxFrascos.Controls) { if (c is DataGridView) { DataGridView _tablaAditivos = (DataGridView)c; if (_tablaAditivos.Rows.Count > 0)//Tiene algun aditivo { for (int i = 0; i < _tablaAditivos.Rows.Count; i++) { PRO_PHPV2_ADITIVO _itemAditivo = new PRO_PHPV2_ADITIVO(); _itemAditivo.PRO_PHPV2 = _itemPHP; _itemAditivo.id_frasco = Convert.ToInt32(_tablaAditivos.Tag); _itemAditivo.aditivo_id = _tablaAditivos.Rows[i].Cells[(int)Col_Aditivos.ID].Value.ToString(); _itemAditivo.aditivo_desc = _tablaAditivos.Rows[i].Cells[(int)Col_Aditivos.ADITIVO].Value.ToString(); _itemAditivo.dosis = Convert.ToDecimal(_tablaAditivos.Rows[i].Cells[(int)Col_Aditivos.DOSIS].Value); P.PRO_PHPV2_ADITIVO.Add(_itemAditivo); } } else //No tiene aditivos { PRO_PHPV2_ADITIVO _itemAditivo = new PRO_PHPV2_ADITIVO(); _itemAditivo.PRO_PHPV2 = _itemPHP; _itemAditivo.id_frasco = Convert.ToInt32(_tablaAditivos.Tag); _itemAditivo.aditivo_id = "S/A"; _itemAditivo.aditivo_desc = ""; _itemAditivo.dosis = 0; P.PRO_PHPV2_ADITIVO.Add(_itemAditivo); } } } PRO_SuministroDeProcedimiento _itemSP = new PRO_SuministroDeProcedimiento(); _itemSP.paciente_id = Clases.Paciente.PacienteIngresado; _itemSP.procedimiento_id = procedimiento_id; _itemSP.tipoProcedimiento_id = 8; _itemSP.usuario_id = Clases.Usuario.UsuarioLogeado.id_usuario_Logeado; _itemSP.fechaAltaSistema = DateTime.Now; if (_suspender == 1) { _itemSP.fechaBaja = _fbja; } if (suministro_procedimiento_id == 0) { _itemSP.PRO_PHPV2 = _itemPHP; P.PRO_SuministroDeProcedimiento.Add(_itemSP); } else { if (_suspender == 1) { PRO_SuministroDeProcedimiento _itemSuministro = new PRO_SuministroDeProcedimiento { suministroDeProcedimiento_id = suministro_procedimiento_id, fechaBaja = _fbja }; P.PRO_SuministroDeProcedimiento.Attach(_itemSuministro); P.Entry(_itemSuministro).Property(s => s.fechaBaja).IsModified = true; } } P.SaveChanges(); dbContextTransaction.Commit(); MetroMessageBox.Show(this, "Se guardo correctamente"); if (suministro_procedimiento_id != 0) { ActualizarIndicacion(); } else { Opener.IActualiza(); } this.Close(); } catch (Exception ex) { dbContextTransaction.Rollback(); MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }