public void Add(IModelodata modelo) { DBModelo modeloTmp = new DBModelo(); CopiarADBModelo(modelo, modeloTmp); using (var DBCtxt = new SimplexContext()) { DBCtxt.Modelos.Add(modeloTmp); DBCtxt.SaveChanges(); } }
public void Remove(Guid id) { using (var DBCtxt = new SimplexContext()) { var modelo = Get(id); DBModelo q = new DBModelo(); CopiarADBModelo((IModelodata)modelo, q); DBCtxt.Modelos.Attach(q); DBCtxt.Ecuaciones.Attach(q.FuncionAOptimizar); DBCtxt.Terminos.RemoveRange(q.FuncionAOptimizar.Terminos); DBCtxt.Ecuaciones.Remove(q.FuncionAOptimizar); DBCtxt.Terminos.RemoveRange(q.FuncionOriginal.Terminos); DBCtxt.Ecuaciones.Remove(q.FuncionOriginal); foreach (var e in q.Ecuaciones) { DBCtxt.Terminos.RemoveRange(e.Terminos); } DBCtxt.Ecuaciones.RemoveRange(q.Ecuaciones); DBCtxt.Modelos.Remove(q); DBCtxt.SaveChanges(); } }
private void CopiarAModelo(DBModelo q, Modelo m) { Ecuacion e = null; Termino t = null; //Copio Ecuaciones foreach (var ec in q.Ecuaciones) { e = new Ecuacion("x", 0); foreach (var ti in ec.Terminos) { t = new Termino { Id = ti.Id, Valor = ti.Valor, Variable = ti.Variable }; e.Terminos.Add(t); } e.Id = ec.Id; e.NroEcu = ec.NroEcu; e.Operador = ec.Operador; e.Preparada = ec.Preparada; e.ValorDerecho = ec.ValorDerecho; e.VariableBasica = ec.VariableBasica; m.Ecuaciones.Add(e); e = new Ecuacion("x", 0); } m.Id = q.Id; m.Nombre = q.Nombre; m.Objetivo = q.Objetivo; m.FuncionAOptimizar = new Ecuacion("tmp", 0, 0) { Id = q.FuncionAOptimizar.Id, NroEcu = q.FuncionAOptimizar.NroEcu, Operador = q.FuncionAOptimizar.Operador, Preparada = q.FuncionAOptimizar.Preparada, ValorDerecho = q.FuncionAOptimizar.ValorDerecho, VariableBasica = q.FuncionAOptimizar.VariableBasica }; foreach (var fAOp in q.FuncionAOptimizar.Terminos) { t = new Termino { Id = fAOp.Id, Valor = fAOp.Valor, Variable = fAOp.Variable }; m.FuncionAOptimizar.Terminos.Add(t); } //m.funcionOriginal.Id = model.funcionOriginal.Id; m.FuncionOriginal = new Ecuacion("tmp", 0, 0) { Id = q.FuncionOriginal.Id, NroEcu = q.FuncionOriginal.NroEcu, Operador = q.FuncionOriginal.Operador, Preparada = q.FuncionOriginal.Preparada, ValorDerecho = q.FuncionOriginal.ValorDerecho, VariableBasica = q.FuncionOriginal.VariableBasica }; foreach (var fO in q.FuncionOriginal.Terminos) { t = new Termino { Id = fO.Id, Valor = fO.Valor, Variable = fO.Variable }; m.FuncionOriginal.Terminos.Add(t); } }
private static void CopiarADBModelo(IModelodata modelo, DBModelo dbm) { DBTermino terminoTmp = null; DBEcuacion ecuacionTmp = null; bool tieneId = modelo.Id != Guid.Empty; if (tieneId) { dbm.Id = modelo.Id; } else { dbm.Id = Guid.NewGuid(); }; dbm.Nombre = modelo.Nombre; dbm.Objetivo = modelo.Objetivo; foreach (var ecu in modelo.Ecuaciones) { ecuacionTmp = new DBEcuacion(); foreach (var term in ecu.Terminos) { terminoTmp = new DBTermino(); if (tieneId) { terminoTmp.Id = term.Id; } else { terminoTmp.Id = Guid.NewGuid(); }; terminoTmp.Valor = term.Valor; terminoTmp.Variable = term.Variable; ecuacionTmp.Terminos.Add(terminoTmp); } if (tieneId) { ecuacionTmp.Id = ecu.Id; } else { ecuacionTmp.Id = Guid.NewGuid(); }; ecuacionTmp.NroEcu = ecu.NroEcu; ecuacionTmp.Operador = ecu.Operador; ecuacionTmp.Preparada = ecu.Preparada; ecuacionTmp.ValorDerecho = ecu.ValorDerecho; ecuacionTmp.VariableBasica = ecu.VariableBasica; dbm.Ecuaciones.Add(ecuacionTmp); //ecuacionTmp = new DBEcuacion(); } if (tieneId) { dbm.FuncionAOptimizar.Id = modelo.FuncionAOptimizar.Id; } else { dbm.FuncionAOptimizar.Id = Guid.NewGuid(); }; dbm.FuncionAOptimizar.NroEcu = modelo.FuncionAOptimizar.NroEcu; dbm.FuncionAOptimizar.Operador = modelo.FuncionAOptimizar.Operador; dbm.FuncionAOptimizar.Preparada = modelo.FuncionAOptimizar.Preparada; dbm.FuncionAOptimizar.ValorDerecho = modelo.FuncionAOptimizar.ValorDerecho; dbm.FuncionAOptimizar.VariableBasica = modelo.FuncionAOptimizar.VariableBasica; foreach (var fAOp in modelo.FuncionAOptimizar.Terminos) { terminoTmp = new DBTermino(); if (tieneId) { terminoTmp.Id = fAOp.Id; } else { terminoTmp.Id = Guid.NewGuid(); }; terminoTmp.Valor = fAOp.Valor; terminoTmp.Variable = fAOp.Variable; dbm.FuncionAOptimizar.Terminos.Add(terminoTmp); } if (tieneId) { dbm.FuncionOriginal.Id = modelo.FuncionOriginal.Id; } else { dbm.FuncionOriginal.Id = Guid.NewGuid(); }; dbm.FuncionOriginal.NroEcu = modelo.FuncionOriginal.NroEcu; dbm.FuncionOriginal.Operador = modelo.FuncionOriginal.Operador; dbm.FuncionOriginal.Preparada = modelo.FuncionOriginal.Preparada; dbm.FuncionOriginal.ValorDerecho = modelo.FuncionOriginal.ValorDerecho; dbm.FuncionOriginal.VariableBasica = modelo.FuncionOriginal.VariableBasica; foreach (var fO in modelo.FuncionOriginal.Terminos) { terminoTmp = new DBTermino(); if (tieneId) { terminoTmp.Id = fO.Id; } else { terminoTmp.Id = Guid.NewGuid(); }; terminoTmp.Valor = fO.Valor; terminoTmp.Variable = fO.Variable; dbm.FuncionOriginal.Terminos.Add(terminoTmp); } }