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