Override SaveChangesAsync to automatically add audit data.

This commit is contained in:
Kevin Matsubara 2025-04-14 17:12:15 +02:00
parent d67d05d6a2
commit 5b90fa1242

View File

@ -42,6 +42,26 @@ public class DeadBallZoneLeagueDbContext : DbContext
.HasName("GetEarliestMatch"); .HasName("GetEarliestMatch");
} }
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
{
var entries = ChangeTracker.Entries<BaseDomainModel>().Where(
λ => λ.State == EntityState.Modified || λ.State == EntityState.Added
);
// Whenever a save is made to an entity, these fields are now automatically updated:
foreach (var entry in entries)
{
entry.Entity.ModifiedDate = DateTime.UtcNow;
entry.Entity.ModifiedBy = "Sample User 1";
if (entry.State == EntityState.Added)
{
entry.Entity.CreatedDate = DateTime.UtcNow;
entry.Entity.CreatedBy = "Sample User";
}
}
return base.SaveChangesAsync(cancellationToken);
}
public DateTime GetEarliestTeamMatch(int teamId) => throw new NotImplementedException(); public DateTime GetEarliestTeamMatch(int teamId) => throw new NotImplementedException();
} }