using LexWells.Infrastructure.EntityFramework.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; namespace LexWells.Infrastructure.EntityFramework; public class UpdateAuditableEntitiesInterceptor : SaveChangesInterceptor { public override ValueTask> SavingChangesAsync( DbContextEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { var context = eventData.Context; if (context == null) { return base.SavingChangesAsync(eventData, result, cancellationToken); } // Find all entities that are being modified and inherit from BaseEntity var entries = context.ChangeTracker .Entries() .Where(e => e.State == EntityState.Modified); foreach (var entry in entries) { entry.Entity.UpdatedAt = DateTime.UtcNow; } return base.SavingChangesAsync(eventData, result, cancellationToken); } }