public virtual void UpdateAuditEntityConfiguration(AuditEntityConfiguration newEntityConfiguration, IAuditingRepository repo = null)
        {
            repo = repo ?? ServiceLocator.Current.GetInstance <IRepositoryBuilder>().CreateAuditingRepository();

#if NETFRAMEWORK
            using (new Profiling.Profiler(nameof(AuditEntityConfiguration), Profiling.AppDevSymbolType.ClassOperation, nameof(AuditEntityConfiguration.UpdateAuditEntityConfiguration)))
            {
#endif
            var newPropertyConfiguration = new AuditPropertyConfiguration();
            var newProperties            = newEntityConfiguration.Properties;

            Properties?.ForEach(oldPropertyConfiguration =>
            {
                newPropertyConfiguration = newProperties?
                                           .FirstOrDefault(a => a.Name == oldPropertyConfiguration?.Name);
                if (newPropertyConfiguration == null)
                {
                    repo.DeleteAuditPropertyConfiguration(oldPropertyConfiguration);
                }
                else
                {
                    oldPropertyConfiguration?.UpdateAuditPropertyConfiguration(newPropertyConfiguration);
                    newProperties?.RemoveAll(c => c.Name == newPropertyConfiguration.Name);
                }
            });

            if (newProperties.Any())
            {
                this?.AddProperties(newProperties);
            }

            repo.Save(this);
#if NETFRAMEWORK
        }
#endif
        }
 public AuditingService(IAuditingRepository repo)
 {
     _repo = repo;
 }