private void ProcesarSalvado() { var horaActual = DateTimeOffset.UtcNow; foreach (var item in ChangeTracker.Entries() .Where(e => e.State == EntityState.Added && e.Entity is Entidad)) { var entidad = item.Entity as Entidad; entidad.FechaCreacion = horaActual; entidad.UsuarioCreacion = servicioUsuarioActual.ObtenerNombreUsuarioActual(); entidad.FechaModificacion = horaActual; entidad.UsuarioModificacion = servicioUsuarioActual.ObtenerNombreUsuarioActual(); } foreach (var item in ChangeTracker.Entries() .Where(e => e.State == EntityState.Modified && e.Entity is Entidad)) { var entidad = item.Entity as Entidad; entidad.FechaModificacion = horaActual; entidad.UsuarioModificacion = servicioUsuarioActual.ObtenerNombreUsuarioActual(); item.Property(nameof(entidad.FechaCreacion)).IsModified = false; item.Property(nameof(entidad.UsuarioCreacion)).IsModified = false; } }
private void GuardarCambiosConAuditoria() { var propiedades = new[] { "UsuarioCreacion", "FechaModificacion", "UsuarioModificacion", "EstaBorrado" }; var Entries = ChangeTracker.Entries() .Where(e => (e.State == EntityState.Added || e.State == EntityState.Modified || e.State == EntityState.Deleted) && e.Properties.Any(p => propiedades.Contains(p.Metadata.Name)) ); foreach (var entry in Entries) { var today = DateTime.UtcNow; //var today = _dateTimeManager.Today; var currentUser = servicioUsuarioActual.ObtenerNombreUsuarioActual(); //var currentUser = _contextData.CurrentUser; switch (entry.State) { case EntityState.Added: entry.Property("UsuarioCreacion").CurrentValue = currentUser; entry.Property("UsuarioModificacion").CurrentValue = currentUser; break; case EntityState.Modified: entry.Property("FechaModificacion").CurrentValue = today; entry.Property("UsuarioModificacion").CurrentValue = currentUser; break; case EntityState.Deleted: entry.State = EntityState.Modified; entry.Property("EstaBorrado").CurrentValue = true; break; } } }