public static int Update <T>(this IAccessDb db, object data, Expression <Func <T, bool> > criteria)
        {
            var args    = data.ToDictionary();
            var ti      = TableInfo.ForType(typeof(T));
            var updater = db.Update <T>();

            foreach (var kv in args)
            {
                if (ti.PrimaryKey == kv.Value)
                {
                    continue;
                }
                if (ti.Excludes.Any(d => d == kv.Key))
                {
                    continue;
                }
                updater.Set(kv.Key, kv.Value);
            }
            return(updater.Where(criteria).Execute());
        }