Pulse7
8/16/2017 - 4:15 PM

Overriding SaveChanges to hookup ModifiedDate and CreatedDate logic

Overriding SaveChanges to hookup ModifiedDate and CreatedDate logic

interface IModificationHistory{
  DateTime DateCreated {get;set;}
  DateTime DateModified {get;set;}
  bool IsDirty {get;set;}
}
class MyDb:DbContext{

  public override int SaveChanges(){
    foreach(var history in this.ChangeTracker.Entries()
      .Where(e=>e.Entity is IModificationHistory && (e.State==EntityState.Added || e.State==EntityState.Modified))
      .Select(e=>e.Entity as IModificationHistory)){
        history.DateModified = DateTime.Now;
        if (history.DateCreated == DateTime.MinValue){
          history.DateCreated = DateTime.Now;
        }
      }
      int result = base.SaveChanges();
      foreach(var history in this.ChangeTracker.Entries()
        .Where(e=>e.Entity is IModificationHistory)
        .Select(e=>e.Entity as IModificationHistory)){
          history.IsDirty = false;
        }
      return result;
  }

}