public string GetUpdateSql <T>(Expression <Func <T, bool> > expression, Expression <Func <T, object> > paramInput, object value, out IDictionary <string, dynamic> paramOuput) { var context = new ExpressionVisitorContext(SqlGenerator); var whereVisitor = new WhereExpressionVisitor(context); whereVisitor.Visit(expression); var whereSql = whereVisitor.Condition.ToSql(SqlGenerator); var setVisitor = new MemberExpressionVisitor(context); setVisitor.Visit(paramInput); var setSql = string.Format("{0} = {1}", setVisitor.Column.ToSql(SqlGenerator), context.AddParameter(value)); paramOuput = context.Parameters; return(SqlGenerator.GetUpdateSql(TypeMapperCache.GetTypeMapper(typeof(T)), setSql, whereSql)); }
public string GetUpdateSql <T>(Expression <Func <T, bool> > expression, IDictionary <Expression <Func <T, object> >, object> paramInput, out IDictionary <string, dynamic> paramOuput) { var context = new ExpressionVisitorContext(SqlGenerator); var whereVisitor = new WhereExpressionVisitor(context); whereVisitor.Visit(expression); var whereSql = whereVisitor.Condition.ToSql(SqlGenerator); var setVisitor = new MemberExpressionVisitor(context); var setSql = new StringBuilder(); foreach (KeyValuePair <Expression <Func <T, object> >, object> item in paramInput) { setVisitor.Visit(item.Key); setSql.AppendFormat("{0} = {1},", setVisitor.Column.ToSql(SqlGenerator), context.AddParameter(item.Value)); } paramOuput = context.Parameters; return(SqlGenerator.GetUpdateSql(TypeMapperCache.GetTypeMapper(typeof(T)), setSql.Remove(setSql.Length - 1, 1).ToString(), whereSql)); }