public int SaveChanges(Action<TrackingSaveChangeOptions> action) { TrackingSaveChangeOptions options = new TrackingSaveChangeOptions(); action(options); TrackingContextFactory.Current.BeforeDbContextSaveChanges(this, options); var changes = base.SaveChanges(); TrackingContextFactory.Current.AfterDbContextSaveChanges(this, CancellationToken.None, options); changes += base.SaveChanges(); return changes; }
public Task<int> SaveChangesAsync(CancellationToken cancellationToken, Action<TrackingSaveChangeOptions> action) { TrackingSaveChangeOptions options = new TrackingSaveChangeOptions(); action(options); return Task.Factory.StartNew<int>(() => { TrackingContextFactory.Current.BeforeDbContextSaveChanges(this, options); var result = base.SaveChangesAsync(cancellationToken).Result; TrackingContextFactory.Current.AfterDbContextSaveChanges(this, cancellationToken, options); base.SaveChangesAsync(cancellationToken).Wait(); return result; }, cancellationToken); }