protected override void Dispose(bool disposing)
 {
     foreach (var entry in this.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged))
     {
         if (entry.Entity != null)
         {
             // Set the change tracker to null
             IEntityWithChangeTracker entity = (IEntityWithChangeTracker)entry.Entity;
             entity.SetChangeTracker(null);
         }
     }
     base.Dispose(disposing);
 }
 /// <summary>
 /// Constructs a strategy object that will cause the change tracker to be set onto the
 /// given object.
 /// </summary>
 /// <param name="entity">The object onto which a change tracker will be set</param>
 public EntityWithChangeTrackerStrategy(IEntityWithChangeTracker entity)
 {
     _entity = entity;
 }
 // <summary>
 // Constructs a strategy object that will cause the change tracker to be set onto the
 // given object.
 // </summary>
 // <param name="entity"> The object onto which a change tracker will be set </param>
 public EntityWithChangeTrackerStrategy(IEntityWithChangeTracker entity)
 {
     _entity = entity;
 }