diff --git a/src/System.Data.Entity.Hooks/DbHookContext.cs b/src/System.Data.Entity.Hooks/DbHookContext.cs index e914bb0..0bb8ebf 100644 --- a/src/System.Data.Entity.Hooks/DbHookContext.cs +++ b/src/System.Data.Entity.Hooks/DbHookContext.cs @@ -128,7 +128,13 @@ public override int SaveChanges() try { - return base.SaveChanges(); + BeforeSaveChanges(); + + var rowsAffected = base.SaveChanges(); + + AfterSaveChanges(rowsAffected); + + return rowsAffected; } finally { @@ -169,6 +175,21 @@ protected void RegisterPostSaveHook(IDbHook dbHook) _postSaveHooks.Add(dbHook); } + /// + /// Called right before SaveChanges method of the DbContext is called, and after pre save hooks are executed. + /// + protected virtual void BeforeSaveChanges() + { + } + + /// + /// Called right after SaveChanges method of the DbContext is called, and before post save hooks are executed. + /// + /// The number of objects written to the underlying database. + protected virtual void AfterSaveChanges(int rowsAffected) + { + } + private void ObjectMaterialized(object sender, ObjectMaterializedEventArgs e) { ObjectStateEntry objectStateEntry;