public SPProducto GetById(int id) { var producto = new SPProducto(); try { using (var ctx = new PresupuestoContext()) { producto = ctx.SPProducto.Where(x => x.productoId == id).SingleOrDefault(); } } catch { } return(producto); }
//metodo para guardar lote y detalle lote public string Save(ProductoDto model) { var rpta = ""; try { using (var ctx = new PresupuestoContext()) { using (DbContextTransaction transaction = ctx.Database.BeginTransaction()) { try { var producto = new SPProducto { productoId = model.productoId, codigo = model.codigo, nombre = model.nombre, categoriaId = model.categoriaId, cultivoId = model.cultivoId, tipo = model.tipo, estado = "A", }; if (producto.productoId > 0) { ctx.Entry(producto).State = EntityState.Modified; } else { ctx.SPProducto.Add(producto); } ctx.SaveChanges(); //obtenemos el ultimo id insertado var productoId = producto.productoId; //eliminamos los existentes para sustituirlos var detalles = ctx.SPProductoPresentacion.Where(x => x.productoId == productoId && x.productoId == model.productoId).ToList(); ctx.SPProductoPresentacion.RemoveRange(detalles); ctx.SaveChanges(); if (model.detalle != null) { foreach (var d in model.detalle) { var detalle = new SPProductoPresentacion { Id = d.Id, productoId = productoId, presentacionId = d.presentacionId, }; ctx.SPProductoPresentacion.Add(detalle); ctx.SaveChanges(); } } transaction.Commit(); rpta = "producto registado correctamente"; } catch (Exception ex) { transaction.Rollback(); throw ex; } } } } catch (Exception e) { throw e; } return(rpta); }