hunostor icon

Model Create and Update DateTime

hunostor | PRO | 11/23/18 03:51:24 PM UTC | 0 ⭐ | 320 👁️ | Never ⏰ | []
C# |

1.51 KB

|

None

|

0 👍

/

0 👎

// 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;
            });
        }

Comments