Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // create interface IAuditableModel
- public interface IAuditableModel
- {
- DateTime CreationTime { get; set; }
- DateTime? ModifiedDate { get; set; }
- }
- // override two method in DbContext
- public override int SaveChanges()
- {
- DateTimeChange();
- return base.SaveChanges();
- }
- public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default(CancellationToken))
- {
- DateTimeChange();
- return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
- }
- private void DateTimeChange()
- {
- var added = ChangeTracker.Entries<IAuditableModel>().Where(E => E.State == EntityState.Added).ToList();
- added.ForEach(E =>
- {
- E.Property(x => x.CreationTime).CurrentValue = DateTime.UtcNow;
- E.Property(x => x.CreationTime).IsModified = true;
- });
- var modified = ChangeTracker.Entries<IAuditableModel>().Where(E => E.State == EntityState.Modified).ToList();
- modified.ForEach(E =>
- {
- E.Property(x => x.ModifiedDate).CurrentValue = DateTime.UtcNow;
- E.Property(x => x.ModifiedDate).IsModified = true;
- E.Property(x => x.CreationTime).CurrentValue = E.Property(x => x.CreationTime).OriginalValue;
- E.Property(x => x.CreationTime).IsModified = false;
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment