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()); }