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>()
|
||||
.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<Playlist> Playlists { get; set; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue