public async Task <bool> ActualizarOrdenDeTrabajo(OrdenTrabajo ordenTrabajo, UsuarioDTO usuario) { try { List <OrdenTrabajoHistorialModificacion> ModificacionOrdenTrabajo = new List <OrdenTrabajoHistorialModificacion>(); OrdenTrabajo ordenTrabajoBD = await _context.OrdenTrabajo .Include(c => c.Cliente) .Include(c => c.Anexos) .Include(c => c.Linea) .Include(c => c.Herramienta) .Include(c => c.TamanoHerramienta) .Include(c => c.Material) .Include(c => c.Material.Material) .Include(c => c.Herramienta.TamanosHerramienta) .Include(c => c.TipoServicio) .Include(c => c.Estado) .Include(c => c.Responsable).AsNoTracking().FirstOrDefaultAsync(c => c.Id == ordenTrabajo.Id); foreach (var entry in _context.Entry(ordenTrabajoBD).Properties) { var value = GetPropValue(ordenTrabajo, entry.Metadata.Name); if (value != null && entry.CurrentValue != null) { if (!entry.CurrentValue.Equals(value)) { ModificacionOrdenTrabajo.Add(new OrdenTrabajoHistorialModificacion() { UsuarioModifica = "admin", OrdenTrabajoId = ordenTrabajoBD.Id, Campo = entry.Metadata.Name, ValorAnterior = entry.OriginalValue == null ? "desconocidos" : entry.OriginalValue.ToString(), FechaModificacion = DateTime.Now, Guid = Guid.NewGuid(), GuidUsuarioModifica = Guid.NewGuid() }); } } Console.WriteLine( $"Property '{entry.Metadata.Name}'" + $" is {(entry.IsModified ? "modified" : "not modified")} " + $"Current value: '{entry.CurrentValue}' " + $"Original value: '{entry.OriginalValue}'"); } _context.Entry(ordenTrabajoBD).CurrentValues.SetValues(ordenTrabajo); if (ordenTrabajo.Material.Id != 0) { ordenTrabajoBD.MaterialId = ordenTrabajo.Material.Id; } ordenTrabajoBD.Anexos = ordenTrabajo.Anexos; ordenTrabajoBD.HerramientaId = ordenTrabajo.HerramientaId; ordenTrabajoBD.ClienteId = ordenTrabajo.ClienteId; ordenTrabajoBD.LineaId = ordenTrabajo.LineaId; ordenTrabajoBD.TamanoHerramientaId = ordenTrabajo.TamanoHerramientaId == 0 ? null : ordenTrabajo.TamanoHerramientaId; ordenTrabajoBD.NombreUsuarioCrea = "admin"; //_context.OrdenTrabajo.Update(ordenTrabajoBD); _context.Entry(ordenTrabajoBD).State = EntityState.Modified; var actualizo = _context.SaveChanges() > 0; var changes = await CrearHistorialModificacionesOrdenDeTrabajo(ModificacionOrdenTrabajo, usuario); return(actualizo); } catch (Exception e) { throw e; } }