private void MakeAudit() { var modifiedEntries = ChangeTracker.Entries().Where( x => x.Entity is AuditEntity && ( x.State == EntityState.Added || x.State == EntityState.Modified || x.State == EntityState.Deleted ) ); foreach (var entry in modifiedEntries) { var entity = entry.Entity as AuditEntity; if (entity != null) { var date = DateTime.Now; var userId = UserSessionHelper.GetUser() != 0 ? UserSessionHelper.GetUser() : 0; if (entry.State == EntityState.Added) { entity.CreatedAt = date; entity.CreatedBy = userId; } else if (entity is ISoftDeleted && ((ISoftDeleted)entity).Deleted) { entity.DeletedAt = date; entity.DeletedBy = userId; } Entry(entity).Property(x => x.CreatedAt).IsModified = false; Entry(entity).Property(x => x.CreatedBy).IsModified = false; entity.UpdatedAt = date; entity.UpdatedBy = userId; } } }