public virtual void Edit(T t, String[] modifiedProperties = null)
        {
            List <LogProperty> oldProperties, newProperties;

            set.Attach(t);
            oldProperties = LogUtilities.GetLogProperties(typeof(T), context.Entry(t).GetDatabaseValues(), context);
            newProperties = LogUtilities.GetLogProperties(typeof(T), context.Entry(t).CurrentValues, context);

            string difference = LogUtilities.SerializeDifference(typeof(T), oldProperties, newProperties, context);

            if (difference != null)
            {
                Module module   = LogUtilities.GetModuleFromType(typeof(T));
                int    entityID = (int)context.Entry(t).Property("ID").CurrentValue;
                Log    logEntry = new Log(entityID, module, Activity.Edited, user.ID, user.Name, difference);
                log.Add(logEntry);
            }

            if (modifiedProperties != null)
            {
                context.Configuration.AutoDetectChangesEnabled = false;

                var entry = context.Entry(t);

                foreach (var prop in modifiedProperties)
                {
                    entry.Property(prop).IsModified = true;
                }
            }
            else
            {
                context.Entry(t).State = EntityState.Modified;
            }
        }