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));
        }
Пример #2
0
 protected string GetTableName(Type type, string customName)
 {
     return((string.IsNullOrEmpty(customName)) ? _integrator.GetTableName(type) : customName);
 }