예제 #1
0
        /// <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.Audit(eventArgs.Entry);

                    if (!auditResponse.IsSuccess)
                    {
                        return;
                    }
                    await context.AddAsync(auditResponse.Result.Item1);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            };

            return(context);
        }