Updated Data Context
Added code to track changes that are made to the database.
This commit is contained in:
parent
57b6f24e35
commit
5387e1beb7
1 changed files with 47 additions and 0 deletions
|
|
@ -18,6 +18,53 @@ public class DataContext : DbContext
|
||||||
modelBuilder.Entity<Playlist>()
|
modelBuilder.Entity<Playlist>()
|
||||||
.Navigation(e => e.videos).AutoInclude();
|
.Navigation(e => e.videos).AutoInclude();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int SaveChanges()
|
||||||
|
{
|
||||||
|
TrackChanges();
|
||||||
|
return base.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task<int> SaveChangesAsync(CancellationToken ct = default)
|
||||||
|
{
|
||||||
|
TrackChanges();
|
||||||
|
return await base.SaveChangesAsync(ct);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TrackChanges()
|
||||||
|
{
|
||||||
|
var changedEntries = ChangeTracker.Entries()
|
||||||
|
.Where(e => e.State == EntityState.Added ||
|
||||||
|
e.State == EntityState.Modified ||
|
||||||
|
e.State == EntityState.Deleted)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
foreach (var entry in changedEntries)
|
||||||
|
{
|
||||||
|
var log = new ChangeLog
|
||||||
|
{
|
||||||
|
TableName = entry.Metadata.GetTableName() ?? entry.Entity.GetType().Name,
|
||||||
|
ChangeType = entry.State.ToString(),
|
||||||
|
ChangeTime = DateTime.UtcNow
|
||||||
|
};
|
||||||
|
|
||||||
|
ChangeLogs.Add(log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChangeLog? GetLatestChange()
|
||||||
|
{
|
||||||
|
return ChangeLogs
|
||||||
|
.OrderByDescending(cl => cl.ChangeTime)
|
||||||
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<ChangeLog?> GetLatestChangeAsync(CancellationToken ct = default)
|
||||||
|
{
|
||||||
|
return await ChangeLogs
|
||||||
|
.OrderByDescending(cl => cl.ChangeTime)
|
||||||
|
.FirstOrDefaultAsync(ct);
|
||||||
|
}
|
||||||
|
|
||||||
public DbSet<History> Histories { get; set; }
|
public DbSet<History> Histories { get; set; }
|
||||||
public DbSet<Playlist> Playlists { get; set; }
|
public DbSet<Playlist> Playlists { get; set; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue