public void LogChanges(DbContext dbContext, Job job) { var modifiedEntities = dbContext.ChangeTracker.Entries().Where(p => p.State == EntityState.Modified).ToList(); var currentDateTime = DateTime.UtcNow; int currentUserId = (int)HttpContext.Current.Session[Constants.CurrentUserId]; var createdBy = ((IReqDataSource)((DataContext)dbContext)).Users.SingleOrDefault(d => d.UserId == currentUserId); foreach (var change in modifiedEntities) { var entityName = job.GetType().Name.Split('_')[0]; var primaryKey = job.JobId; foreach (var prop in change.OriginalValues.PropertyNames) { var originalValue = change.OriginalValues[prop] == null ? string.Empty : change.OriginalValues[prop].ToString(); //var originalValue = change.GetDatabaseValues().GetValue<object>(prop).ToString(); var currentValue = change.CurrentValues[prop] == null ? string.Empty : change.CurrentValues[prop].ToString(); if (originalValue != currentValue) { ChangeLog log = new ChangeLog { EntityName = entityName, PrimaryKeyValue = (int)primaryKey, PropertyName = prop, OldValue = originalValue, NewValue = currentValue, DateChanged = currentDateTime, LoggedBy = createdBy.UserName }; _logChangeRepository.AddChangeLog(log); } } _logChangeRepository.Save(); } }