/// <summary> /// Audit tracker for context who inherit from TrackerDbContext /// </summary> /// <typeparam name="T"></typeparam> /// <param name="context"></param> /// <returns></returns> public static T EnableTracking <T>(this T context) where T : DbContext, ITrackerDbContext { context.ChangeTracker.Tracked += async(sender, eventArgs) => { try { if (eventArgs.Entry.State == EntityState.Unchanged) { return; } var auditResponse = TrackerFactory.ExtractAudit(eventArgs.Entry); if (!auditResponse.IsSuccess) { return; } await context.AddAsync(auditResponse.Result.Item1); } catch (Exception e) { Console.WriteLine(e); } }; return(context); }