private ExpressionToSqlmpl <T> SelectParser(Expression expression, Expression expressionBody, params Type[] ary) { this.Clear(); this._sqlBuilder.IsSingleTable = false; if (expressionBody != null && expressionBody.Type == typeof(T)) { throw new ArgumentException("cannot be parse expression", "expression"); } foreach (var item in ary) { string tableName = item.Name; this._sqlBuilder.SetTableAlias(GetTableName(tableName)); } string sql = "select {0}\nfrom " + GetTableName(this._mainTableName) + " " + this._sqlBuilder.GetTableAlias(GetTableName(this._mainTableName)); if (expression == null) { _sqlBuilder.AppendFormat(sql, "*"); } else { ExpressionToSqlProvider.Select(expressionBody, this._sqlBuilder); _sqlBuilder.AppendFormat(sql, this._sqlBuilder.SelectFieldsStr); } return(this); }
protected override SqlBuilder OrderBy(NewExpression expression, SqlBuilder sqlBuilder) { foreach (Expression item in expression.Arguments) { ExpressionToSqlProvider.OrderBy(item, sqlBuilder); } return(sqlBuilder); }
public ExpressionToSqlmpl <T> OrderBy(Expression <Func <T, object> > expression) { if (expression == null) { throw new ArgumentNullException("expression", "Value cannot be null"); } _sqlBuilder += "\norder by "; ExpressionToSqlProvider.OrderBy(expression.Body, this._sqlBuilder); return(this); }
public ExpressionToSqlmpl <T> Sum(Expression <Func <T, object> > expression) { if (expression == null) { throw new ArgumentNullException("expression", "Value cannot be null"); } Clear(); ExpressionToSqlProvider.Sum(expression.Body, this._sqlBuilder); return(this); }
private static void LikeRight(MethodCallExpression expression, SqlBuilder sqlBuilder) { if (expression.Object != null) { ExpressionToSqlProvider.Where(expression.Object, sqlBuilder); } ExpressionToSqlProvider.Where(expression.Arguments[0], sqlBuilder); sqlBuilder += " like concat("; ExpressionToSqlProvider.Where(expression.Arguments[1], sqlBuilder); sqlBuilder += ",'%') "; }
public ExpressionToSqlmpl <T> Update(Expression <Func <object> > expression) { if (expression == null) { throw new ArgumentNullException("expression", "Value cannot be null"); } Clear(); _sqlBuilder.IsSingleTable = true; _sqlBuilder.AppendFormat("update {0} set ", GetTableName(this._mainTableName)); ExpressionToSqlProvider.Update(expression.Body, this._sqlBuilder); return(this); }
protected override SqlBuilder Select(NewExpression expression, SqlBuilder sqlBuilder) { foreach (Expression item in expression.Arguments) { ExpressionToSqlProvider.Select(item, sqlBuilder); } foreach (MemberInfo item in expression.Members) { sqlBuilder.SelectFieldsAlias.Add(item.Name); } return(sqlBuilder); }
private ExpressionToSqlmpl <T> JoinParser2 <T2, T3>(Expression <Func <T2, T3, bool> > expression, string leftOrRightJoin = "") { if (expression == null) { throw new ArgumentNullException("expression", "Value cannot be null"); } string joinTableName = typeof(T3).Name; this._sqlBuilder.SetTableAlias(GetTableName(joinTableName)); this._sqlBuilder.AppendFormat("\n{0}join {1} on", leftOrRightJoin, GetTableName(joinTableName) + " " + this._sqlBuilder.GetTableAlias(GetTableName(joinTableName))); ExpressionToSqlProvider.Join(expression.Body, this._sqlBuilder); return(this); }
protected override SqlBuilder In(NewArrayExpression expression, SqlBuilder sqlBuilder) { sqlBuilder += "("; foreach (Expression expressionItem in expression.Expressions) { ExpressionToSqlProvider.In(expressionItem, sqlBuilder); } if (sqlBuilder[sqlBuilder.Length - 1] == ',') { sqlBuilder.Remove(sqlBuilder.Length - 1, 1); } sqlBuilder += ")"; return(sqlBuilder); }
protected override SqlBuilder Join(BinaryExpression expression, SqlBuilder sqlBuilder) { ExpressionToSqlProvider.Join(expression.Left, sqlBuilder); int operatorIndex = sqlBuilder.Length; ExpressionToSqlProvider.Join(expression.Right, sqlBuilder); int sqlLength = sqlBuilder.Length; if (sqlLength - operatorIndex == 5 && sqlBuilder.Sql.EndsWith("null")) { OperatorParser(expression.NodeType, operatorIndex, sqlBuilder, true); } else { OperatorParser(expression.NodeType, operatorIndex, sqlBuilder); } return(sqlBuilder); }
public ExpressionToSqlmpl <T> Count(Expression <Func <T, object> > expression = null) { this.Clear(); if (expression == null) { string tableName = GetTableName(typeof(T).Name); _sqlBuilder.SetTableAlias(tableName); string tableAlias = _sqlBuilder.GetTableAlias(tableName); if (!string.IsNullOrWhiteSpace(tableAlias)) { tableName += " " + tableAlias; } _sqlBuilder.AppendFormat("select count(*) from {0}", tableName); } else { ExpressionToSqlProvider.Count(expression.Body, this._sqlBuilder); } return(this); }
public ExpressionToSqlmpl <T> Where(Expression <Func <T, bool> > expression) { if (expression == null) { throw new ArgumentNullException("expression", "Value cannot be null"); } if (expression.Body != null && expression.Body.NodeType == ExpressionType.Constant) { throw new ArgumentException("Cannot be parse expression", "expression"); } if (this._sqlBuilder.Sql.Contains("where")) { this._sqlBuilder += "\n&&"; } else { this._sqlBuilder += "\nwhere"; } ExpressionToSqlProvider.Where(expression.Body, this._sqlBuilder); return(this); }
protected override SqlBuilder Where(BinaryExpression expression, SqlBuilder sqlBuilder) { if (IsNeedsParentheses(expression, expression.Left)) { sqlBuilder += "("; ExpressionToSqlProvider.Where(expression.Left, sqlBuilder); sqlBuilder += ")"; } else { ExpressionToSqlProvider.Where(expression.Left, sqlBuilder); } int signIndex = sqlBuilder.Length; if (IsNeedsParentheses(expression, expression.Right)) { sqlBuilder += "("; ExpressionToSqlProvider.Where(expression.Right, sqlBuilder); sqlBuilder += ")"; } else { ExpressionToSqlProvider.Where(expression.Right, sqlBuilder); } int sqlLength = sqlBuilder.Length; if (sqlLength - signIndex == 5 && sqlBuilder.ToString().EndsWith("null")) { OperatorParser(expression.NodeType, signIndex, sqlBuilder, true); } else { OperatorParser(expression.NodeType, signIndex, sqlBuilder); } return(sqlBuilder); }
private static void InnerIn(MethodCallExpression expression, SqlBuilder sqlBuilder) { ExpressionToSqlProvider.Where(expression.Arguments[0], sqlBuilder); sqlBuilder += " in"; ExpressionToSqlProvider.In(expression.Arguments[1], sqlBuilder); }
protected override SqlBuilder OrderBy(ParameterExpression expression, SqlBuilder sqlBuilder) { ExpressionToSqlProvider.OrderBy(expression, sqlBuilder); return(sqlBuilder); }
protected override SqlBuilder Select(ParameterExpression expression, SqlBuilder sqlBuilder) { ExpressionToSqlProvider.Select(expression, sqlBuilder); return(sqlBuilder); }
protected override SqlBuilder GroupBy(UnaryExpression expression, SqlBuilder sqlBuilder) { ExpressionToSqlProvider.GroupBy(expression.Operand, sqlBuilder); return(sqlBuilder); }
protected override SqlBuilder Select(UnaryExpression expression, SqlBuilder sqlBuilder) { ExpressionToSqlProvider.Select(expression.Operand, sqlBuilder); return(sqlBuilder); }