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;