public SqlQueryView(IQueryView query, IQueueView queryQueue, string tableName) { Query = query; Queue = queryQueue; TableName = tableName; Visit = new ExpressionVisit <TEntity>(query, queryQueue, new ExpressionNew <TEntity>(query, queryQueue), new ExpressionBool <TEntity>(query, queryQueue)); }
private static SqlCaluse SelectCount(MethodCallExpression exp, SqlCaluse sqlCaluse) { var a = exp.Arguments[0]; ExpressionVisit.SelectMethod(a, sqlCaluse); AddColumn(sqlCaluse, "\n COUNT(CASE WHEN{0} THEN 1 ELSE null END) "); return(sqlCaluse); }
private static SqlCaluse InMethod(MethodCallExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.Join(exp.Arguments[0], sqlCaluse); sqlCaluse += " In ("; ExpressionVisit.In(exp.Arguments[1], sqlCaluse); sqlCaluse += ")"; return(sqlCaluse); }
private static SqlCaluse NotLikeMethod(MethodCallExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.Where(exp.Arguments[0], sqlCaluse); sqlCaluse += " Not Like "; sqlCaluse.LikeMode = 1; ExpressionVisit.Where(exp.Arguments[1], sqlCaluse); return(sqlCaluse); }
protected override SqlCaluse GroupBy(NewExpression exp, SqlCaluse sqlCaluse) { for (int i = 0; i < exp.Arguments.Count; i++) { var argExp = exp.Arguments[i]; ExpressionVisit.GroupBy(argExp, sqlCaluse); } return(sqlCaluse); }
protected override SqlCaluse Join(BinaryExpression exp, SqlCaluse sqlCaluse) { sqlCaluse += " ON "; ExpressionVisit.Join(exp.Left, sqlCaluse); var insertIndex = sqlCaluse.Length; ExpressionVisit.Join(exp.Right, sqlCaluse); OperatorParser(exp.NodeType, insertIndex, sqlCaluse.Sql, false); return(sqlCaluse); }
protected override SqlCaluse Insert(NewExpression exp, SqlCaluse sqlCaluse) { for (int i = 0; i < exp.Members.Count; i++) { var member = exp.Members[i]; var name = member.GetAttribute <ColumnNameAttribute>()?.Name ?? member.Name; sqlCaluse.SelectFields.Add(name); ExpressionVisit.Insert(exp.Arguments[i], sqlCaluse); } return(sqlCaluse); }
protected override SqlCaluse Where(BinaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.Where(exp.Left, sqlCaluse); var insertIndex = sqlCaluse.Length; ExpressionVisit.Where(exp.Right, sqlCaluse); var endIndex = sqlCaluse.Length; var b = endIndex - insertIndex == 5 && sqlCaluse.EndWith("null"); OperatorParser(exp.NodeType, insertIndex, sqlCaluse.Sql, b); return(sqlCaluse); }
protected override SqlCaluse SelectMethod(BinaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.SelectMethod(exp.Left, sqlCaluse); var insertIndex = sqlCaluse.SelectMethod.Length; ExpressionVisit.SelectMethod(exp.Right, sqlCaluse); var endIndex = sqlCaluse.SelectMethod.Length; var b = endIndex - insertIndex == 5 && sqlCaluse.SelectMethod.ToString().EndsWith("null"); OperatorParser(exp.NodeType, insertIndex, sqlCaluse.SelectMethod, b, false); return(sqlCaluse); }
//protected override SqlCaluse Where(NewArrayExpression exp, SqlCaluse sqlCaluse) { // sqlCaluse += "("; // foreach (var item in exp.Expressions) { // ExpressionVisit.In(item, sqlCaluse); // sqlCaluse += ","; // } // sqlCaluse -= ","; // sqlCaluse += ")"; // return sqlCaluse; //} protected override SqlCaluse In(NewArrayExpression exp, SqlCaluse sqlCaluse) { //sqlCaluse += "("; foreach (var item in exp.Expressions) { ExpressionVisit.In(item, sqlCaluse); sqlCaluse += ","; } sqlCaluse -= ","; //sqlCaluse += ")"; return(sqlCaluse); }
private static SqlCaluse SelectGroupConcat(MethodCallExpression exp, SqlCaluse sqlCaluse) { if (sqlCaluse.DbType == 2) { var a = exp.Arguments[0]; ExpressionVisit.SelectMethod(a, sqlCaluse); AddColumn(sqlCaluse, "\n GROUP_CONCAT({0}) "); } else { throw new Exception("GroupConcat 只支持 MySql"); } return(sqlCaluse); }
protected override SqlCaluse Select(NewExpression exp, SqlCaluse sqlCaluse) { for (int i = 0; i < exp.Arguments.Count; i++) { var argExp = exp.Arguments[i]; if (sqlCaluse.GetMemberName == null) { sqlCaluse.GetMemberName = () => { return(exp.Members[i].Name); } } ; ExpressionVisit.Select(argExp, sqlCaluse); } return(sqlCaluse); }
protected override SqlCaluse Where(UnaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.Where(exp.Operand, sqlCaluse); return(sqlCaluse); }
protected override SqlCaluse PrimaryKey(UnaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.PrimaryKey(exp.Operand, sqlCaluse); return(sqlCaluse); }
protected override SqlCaluse Insert(UnaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.Insert(exp.Operand, sqlCaluse); return(sqlCaluse); }
/// <summary> /// 查询支持的SQL方法 /// </summary> /// <param name="queueManger">队列管理模块</param> /// <param name="queue">包含数据库SQL操作的队列</param> public SqlBuilder(BaseQueueManger queueManger, Queue queue) { QueueManger = queueManger; Queue = queue; Visit = new ExpressionVisit(queueManger, Queue); }
protected override SqlCaluse SelectMethod(LambdaExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.SelectMethod(exp.Body, sqlCaluse); return(sqlCaluse); }
protected override SqlCaluse SelectMethod(UnaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.SelectMethod(exp.Operand, sqlCaluse); return(sqlCaluse); }
/// <summary> /// 查询支持的SQL方法 /// </summary> /// <param name="queueManger">队列管理模块</param> /// <param name="queueSql">包含数据库SQL操作的队列</param> public SqlOper(IQueueManger queueManger, IQueueSql queueSql) { QueueManger = queueManger; QueueSql = queueSql; Visit = new ExpressionVisit <TEntity>(queueManger, QueueSql); }
protected override SqlCaluse GroupBy(UnaryExpression exp, SqlCaluse sqlCaluse) { ExpressionVisit.GroupBy(exp.Operand, sqlCaluse); return(sqlCaluse); }