private CommandDefinition GetSetColumnsUpdateCommand <TModel>(TModel @object, Expression <Func <TModel, object> >[] setColumns) { var type = typeof(TModel); DynamicParameters dp = new DynamicParameters(); string setColumnExpr = string.Join(", ", setColumns.Select(e => { string propName = PropertyNameFromLambda(e); PropertyInfo pi = type.GetProperty(propName); dp.Add(propName, e.Compile().Invoke(@object)); return($"{ApplyDelimiter(pi.GetColumnName())}=@{propName}"); })); string cmdText = $"UPDATE {ApplyDelimiter(_integrator.GetTableName(type))} SET {setColumnExpr} WHERE {ApplyDelimiter(type.GetIdentityName())}=@id"; dp.Add("id", GetIdentity(@object)); return(new CommandDefinition(cmdText, dp)); }
protected string GetTableName(Type type, string customName) { return((string.IsNullOrEmpty(customName)) ? _integrator.GetTableName(type) : customName); }